我想调用非静态公共方法(在我的主程序中),该方法更新了我的一些GUI对象,这些对象是通过另一个按钮(在我的示例中)通过单击按钮或在我的示例中通过按一个键盘键。
我尝试从No2类调用公共静态方法,该方法会更改bool的值。与此并行的是,我有一个计时器,该计时器用作一种机制,用于查找bool值的变化并触发Main类中的方法,该方法然后更新GUI对象。
No2Class-具有应触发主要事件中的方法的事件
public class No2Class extends Application{
private void handleKeyboardProzor(Scene scene, final Node root) {
scene.setOnKeyPressed((KeyEvent event) -> {
switch (event.getCode()) {
case A:
Main.vSwap();
break;
}
});
}
主要-应该更新的一个
///...
@FXML
private ImageView img_R1;
boolean bSwap=true, bSwap1=true,bVis=true;
final long minUpdateInterval = 500;
final LongProperty lastUpdate = new SimpleLongProperty();
AnimationTimer timer = new AnimationTimer() {
@Override
public void handle(long now) {
df.setMaximumFractionDigits(4);
if (now - lastUpdate.get() > minUpdateInterval) {
if(bSwap!=bSwap1){
updateMethod();
bSwap1=bSwap;
}
}
}
});
Public static void vSwap(){
bSwap=!bSwap;
}
public void updateMethod(){
img_R1.setVisible(!bVis);
}
//...
所以我希望在我的No2Class中按下键“ A”时,主类中img_R1的可见性发生变化。而这段代码正是这样做的。我真正的问题是:是否有更优雅的方法或者应该说更正确的方法,因为我不认为为此类事情使用活动计时器是它的真实用法?