Rozszerzanie kontrolek w javaFX

Rozszerzanie kontrolek w javaFX
danek
  • Rejestracja:ponad 10 lat
  • Ostatnio:7 miesięcy
  • 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? ;)


Spring? Ja tam wole mieć kontrole nad kodem ᕙ(ꔢ)ᕗ
Haste - mała biblioteka do testów z czasem.
JacaDev
  • Rejestracja:prawie 11 lat
  • Ostatnio:około rok
  • 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

edytowany 2x, ostatnio: JacaDev
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.

Gjorni
  • Rejestracja:około 12 lat
  • Ostatnio:około 3 lata
0

The quieter you become, the more you are able to hear.

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.