Rozszerzanie kontrolek w javaFX

Rozszerzanie kontrolek w javaFX
danek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
  • Postów: 797
0

Witam.
Jak w javieFX można dodawać do kontrolek własne metody, żeby np. do textField'a można było wprowadzać tylko liczby?

Szukałem w google/dokumentacji i mam cos takiego:

Kopiuj
 public class NumberTextField extends TextField {	
	
	@Override
	public void replaceText(int start, int end, String text){
		if (validate(text)) {
			super.replaceText(start, start, text);
		}
	}
	
	@Override
	public void replaceSelection(String text){
		if (validate(text)) {
			super.replaceSelection(text);
		}
	}	
	
	private boolean validate(String text){
		return (text.equals("")) || (text.matches("[0-9]"));
	}	
}

Teraz w kontrolerze widoku chce go dodać na zasadzie

Kopiuj
 @FXML
private NumberTextField textField;

w pliku .fxml jest dodany po prosu zwykły textField któremu nadaje to id i w tym miejscu wywala błąd
You can not assign 'TextField' to the controller field 'NumberTextField'

I teraz mam pytanie jak to zrobić zeby działało? ;)

JacaDev
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
0

Jeśli w pliku fxml masz TextField, to nie możesz przypisać tego do NumberTextField. Nie działa to w tę stronę. To, co chcesz zrobić, jest opisane tutaj:
http://docs.oracle.com/javafx/2/fxml_get_started/custom_control.htm

  • Rejestracja: dni
  • Ostatnio: dni
0

Niestety, jeśli w FXML dodałeś kontrolkę określonego typu to w kontrolerze musisz użyć tego samego. Natomiast nic nie stoi na przeszkodzie, aby dodać obsługę zdarzenia zmiany tekstu, lub litenera na textProperty i tam zrobić sobię wymaganą przez Ciebie obsługę wprowadzania tekstu.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.