У меня есть приложение 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);
}
}