我是JavaFX的新手。 我正在为我的项目构建GUI,但我遇到了问题- 似乎一旦显示我的用户界面,它就会停止更新。 就我而言,它应该更新一个圆圈的填充颜色,但是不能。
我试图移动这条线: someCircleId.setFill(color)); 高于线: Main.stage.show(); 在我的代码的initialize函数中,它确实改变了颜色 一定的圈子。
public class UIController implements Initializable {
public UIController() {
fillMap();
}
@Override
public void initialize(URL location, ResourceBundle resources) {
Main.stage.show();
}
@FXML
public void pressExitButton() {
Main.dropDBSchema();
System.exit(0);
}
public void changeCircleColor(String circleKey, Color color) {
Platform.runLater(
() -> {
Circle circle = this.circles.get(circleKey);
PauseTransition delay = new PauseTransition(Duration.seconds(10));
delay.setOnFinished(event -> circle.setFill(color));
delay.play();
}
);
}
}
这是使用这些功能的类:
public class MonitoringLogicImpl implements MonitoringLogic {
public void updateUI(UUID flowUUID, String sender, String receiver, DATA_STATUS status){
String key = flowUUID.toString()+"_"+sender+"_"+receiver;
Color color = this.uiController.getColorAccordingToStatus(status);
this.uiController.changeCircleColor(key, color);
}
}
这是FXML初始化:
public void start(Stage stage){
this.stage = stage;
FXMLLoader loader = new FXMLLoader();
try {
loader.setLocation(getClass().getResource("/UserInterface.fxml"));
this.root = loader.load();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e){
e.printStackTrace();
}
stage.setTitle("Troubleshooting project");
stage.setScene(new Scene(root, 900, 700));
stage.show();
}
我使用Scene-Builder工具创建了UI。