LINUX.ORG.RU

История изменений

Исправление Bioreactor, (текущая версия) :

Простите, а какой у Вас полный код?

У меня вот такой код (а упростил свой пример, выкинув все лишнее) работает корректно.

import javafx.application.*; 
import javafx.event.*; 
import javafx.stage.*; 
import javafx.scene.*;
import javafx.scene.layout.*;
import javax.swing.*;
import javafx.embed.swing.*;
import java.awt.event.*;

public class SwingFx8 extends Application {

         private JButton b = new JButton("Exit");

         @Override
         public void start(Stage stage) {
             final SwingNode swingNode = new SwingNode();
             createAndSetSwingContent(swingNode);
             StackPane pane = new StackPane();
             pane.getChildren().add(swingNode);
             stage.setScene(new Scene(pane, 300, 100));
             stage.setTitle("Swing exit test");
             stage.show();
         }

         private void createAndSetSwingContent(final SwingNode swingNode) {
             b.addActionListener(e -> System.exit(0)); 
             SwingUtilities.invokeLater(() -> {swingNode.setContent(b); });
         }
 
         public static void main(String[] args) {
             launch(args);
         }
}

Исходная версия Bioreactor, :

Простите, а какой у Вас полный код?

У меня вот такой код (а упростил свой пример, выкинув все лишнее) работает корректно.

import javafx.application.*; 
import javafx.event.*; 
import javafx.stage.*; 
import javafx.scene.*;
import javafx.scene.layout.*;
import javax.swing.*;
import javafx.embed.swing.*;
import java.awt.event.*;

public class SwingFx8 extends Application {

         private JButton b = new JButton("Exit");

         @Override
         public void start(Stage stage) {
             final SwingNode swingNode = new SwingNode();
             createAndSetSwingContent(swingNode);
             StackPane pane = new StackPane();
             pane.getChildren().add(swingNode);
             stage.setScene(new Scene(pane, 300, 100));
             stage.setTitle("Swing exit test");
             stage.show();
         }

         private void createAndSetSwingContent(final SwingNode swingNode) {

             b.addActionListener(e -> System.exit(0)); 

             SwingUtilities.invokeLater(new Runnable() {
                 @Override
                 public void run() {
                     swingNode.setContent(b);
                 }
             });
         }
 
         public static void main(String[] args) {
             launch(args);
         }
}