Я новичок в JavaFX.
Я строю графический интерфейс для моего проекта, и у меня есть проблема с ним -
кажется, что когда я показываю свой интерфейс, он перестает обновляться
В моем случае он должен обновить цвет заливки для круга, но это не так.
Я попытался переместить строку:
someCircleId.setFill (цвет));
быть выше линии:
Main.stage.show ();
в функции инициализации в моем коде, и это изменило цвет
определенный круг.
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.