CRE*_*REW 8 java javafx actionlistener
我知道JavaFX中有听众,我确信Java.但我很困惑如何实现它们.
我有一个在我的程序中改变的布尔变量.每次更改布尔值时,我都希望运行一个函数myFunc().
这可以轻松完成吗?
Ulu*_*Biy 24
如果您使用的是JavaFX 2,那么它为JavaBeans组件体系结构和Observer设计模式提供了现成的解决方案.此外,它提供了通过属性绑定关联变量状态的极大灵活性.下面的代码说明了属性更改事件和属性变量的绑定.当然,您可以通过like getFlag()和setFlag()below 包装属性访问器来隐藏详细信息,并在其余的应用程序中使用它们.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
就这么简单:
public void changeBooleanFlag(boolean bEnabled)
{
if(booleanFlag == bEnabled) return;
booleanFlag = bEnabled;
myFunc();
}
Run Code Online (Sandbox Code Playgroud)
每当你想改变布尔标志时,你应该通过这个方法来完成。
| 归档时间: |
|
| 查看次数: |
38672 次 |
| 最近记录: |