Пользовательский интерфейс не обновляется? - PullRequest
0 голосов
/ 04 июня 2019

Я новичок в 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...