Компонент Javafx не загружается через некоторое время - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть приложение Swing и встраивание компонента javafx в диалоговое окно. Когда мы запускаем приложение, все работает правильно. Если приложение продолжает работать 2 часа, теперь, когда мы открываем диалоговое окно. Он открывается как пустой. Пожалуйста, найдите ниже код

public class ButtonExample {
    public static void main(String[] args) {
        JFrame f = new JFrame("Button Example");
        JButton b = new JButton("Click Here");
        JFXPanel panel = new JFXPanel();
        Platform.setImplicitExit(false);
        b.addActionListener(new java.awt.event.ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                open(panel);
            }    
            private void open(JFXPanel panel) {
                try {
                    Platform.runLater(() -> createFX(panel));
                } catch (Exception e) {
                    System.out.println(e.getMessage());

                }    
            }

            private void createFX(JFXPanel panel) {
                GetDataDialog dialog = new GetDataDialog();
                dialog.init();
                Scene dialogScene = new Scene(dialog.getRoot());
                Stage dialogStage = new Stage();
                dialogStage.initModality(Modality.APPLICATION_MODAL);
                panel.setScene(dialogScene);
                dialogStage.setScene(dialogScene);
                dialogStage.showAndWait();    
            }
        });
        b.setBounds(50, 100, 95, 30);
        f.add(b);
        f.setSize(400, 400);
        f.setLayout(null);
        f.setVisible(true);
    }
}

class GetDataDialog {    
    private VBox vbox;
    private String data = "";

    public void init() {
        vbox = new VBox();
        vbox.setSpacing(20.0d);    
        TextField tf = new TextField();    
        Button btn = new Button("Submit");
        btn.setOnAction((evt) -> {
            data = tf.getText();
            ((Button) evt.getSource()).getScene().getWindow().hide();
        });    
        vbox.getChildren().add(new Label("Enter Data"));
        vbox.getChildren().add(tf);
        vbox.getChildren().add(btn);
    } 
}
...