2015-12-19 12 views
5

Ci sono due metodi disponibili per la chiamata quando si eredita da javafx.scene.Node: (sto mostrando al largo della 8u66 implementazione corrente di Oracle)Node.setDisable() vs setDisabled() in JavaFX

setDisable(boolean)

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

setDisabled(boolean)

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

Quale dovrei chiamare quando eredita da javafx.scene.Node?

risposta

8

Dipende un po 'dal contesto, ma quasi certamente si desidera chiamare setDisable(...).

In JavaFX, un nodo è reso come disabili, e ignora qualsiasi input dell'utente, se la sua proprietà disable è true, o se la proprietà disable è vero per qualsiasi antenato nel grafico scena. La proprietà disabled, che è una proprietà di sola lettura per i client del nodo, riflette questo stato generale: vale a dire disabled è true se e solo se disable è true per questo nodo o per uno dei suoi nodi antenati (contenitori).

Quindi, per disabilitare un nodo, è necessario chiamare in genere setDisable(true);. In una sottoclasse personalizzata di Node, è necessario chiamare solo setDisabled(true); per applicare la regola descritta sopra. Nota che l'implementazione della superclasse farà già rispettare questa regola, quindi a meno che tu non stia facendo qualcosa di molto complesso (non riesco nemmeno a vedere un caso d'uso), non dovrai chiamare lo setDisabled(...).

3

Si desidera utilizzare setDisable, non setDisabled. setDisable è un metodo public per disabilitare un nodo, setDisabled è un metodo protected utilizzato solo da implementazioni interne.

Citato da this comment dall'utente @jewelsea.