2015-12-19 4 views
5

Istnieją dwie metody do wywołania gdy dziedziczenie z javafx.scene.Node: (ja popisać aktualny 8u66 wdrożenia Oracle)Node.setDisable()() vs setDisabled w JavaFX

setDisable(boolean)

public final void setDisable(boolean value) { 
    disableProperty().set(value); 
} 

setDisabled(boolean)

protected final void setDisabled(boolean value) { 
    disabledPropertyImpl().set(value); 
} 

Który powinienem zadzwonić, gdy dziedziczenie z javafx.scene.Node?

Odpowiedz

8

Zależy trochę od kontekstu, ale prawie na pewno chcesz zadzwonić pod numer setDisable(...).

W JavaFX, węzeł jest wyświetlany jako wyłączony, a ignoruje wprowadzania danych przez użytkownika, jeśli jego disable nieruchomość jest true, lub jeżeli nieruchomość disable prawda dla każdego przodka na wykresie sceny. Właściwość disabled, która jest własnością tylko do odczytu dla klientów węzła, odzwierciedla ten ogólny stan: to jest disabled jest prawdziwe wtedy i tylko wtedy, gdy disable jest prawdziwe dla tego węzła lub dla dowolnego z jego węzłów-przodków (kontenerów).

Aby wyłączyć węzeł, należy zazwyczaj wywołać setDisable(true);. W niestandardowej podklasie Node powinieneś zadzwonić pod numer setDisabled(true);, aby wymusić regułę opisaną powyżej. Zauważ, że implementacja superklasy będzie już wymuszać tę regułę, więc jeśli nie robisz czegoś bardzo skomplikowanego (nie widzę nawet przypadku użycia), nie będziesz musiał dzwonić pod numer setDisabled(...).

3

Chcesz użyć setDisable, a nie setDisabled. setDisable to metoda wyłączania węzła, metoda setDisabled jest używana tylko w wewnętrznych implementacjach.

Cytowane z this comment przez użytkownika @jewelsea.