Se si sta utilizzando JavaFX 2 quindi fornisce una soluzione out-of-box sia per architettura a componenti JavaBeans e design pattern Observer. Inoltre offre una grande flessibilità nell'associare lo stato delle variabili tramite le associazioni di proprietà. Il codice seguente illustra gli eventi modificati di proprietà e il binding delle variabili di proprietà. Ovviamente è possibile racchiudere i metodi di accesso alle proprietà per nascondere i dettagli come getFlag()
e setFlag()
di seguito e utilizzarli nel resto dell'applicazione.
public class Demo extends Application {
private BooleanProperty booleanProperty = new SimpleBooleanProperty(true);
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
// Add change listener
booleanProperty.addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
System.out.println("changed " + oldValue + "->" + newValue);
myFunc();
}
});
Button btn = new Button();
btn.setText("Toggle boolean flag");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
booleanProperty.set(!booleanProperty.get()); //toggle
System.out.println("toggled to " + booleanProperty.get());
}
});
// Bind to another property variable
btn.underlineProperty().bind(booleanProperty);
StackPane root = new StackPane();
root.getChildren().add(btn);
primaryStage.setScene(new Scene(root, 300, 250));
primaryStage.show();
}
public boolean getFlag() {
return booleanProperty.get();
}
public void setFlag(boolean val) {
booleanProperty.set(val);
}
}
fonte
2012-04-02 12:52:11
avrebbe potuto ci un certo codice mostrare? Non penso che ciò che stai chiedendo sia possibile, ma lo stesso effetto può essere ottenuto in un modo diverso. – chandsie