English 中文(简体)
Adding JFXPanel to a JFrame. Why is it not working?
原标题:

I am trying to add a JFXPanel to my JFrame. I am using Netbeans and Netbeans Swing GUI Builder. When I run it I do not get any errors and the JFrame is created successfully but the JFXPanel with the text does not appear.

Here is my code:

public class TestingFX {

  private static void initJFrame() {

    NewJFrame frame = new NewJFrame();
    final JFXPanel fxPanel = new JFXPanel();
    frame.add(fxPanel);
    frame.setVisible(true);

    Platform.runLater(new Runnable() {

        @Override
        public void run() {
            fxPanel.setScene(createScene());
        }
    });
  }

  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {

        @Override
        public void run() {
            initJFrame();
        }
    });
  }

  public static Scene createScene() {
    Text text = new Text("Hello World");
    text.setFont(new Font(24));
    text.setEffect(new Reflection());

    BorderPane pane = new BorderPane();
    pane.setCenter(text);
    Scene scene = new Scene(pane);

    return scene;
  }
}

Why is it not working? Am I doing something wrong?

最佳回答

Perhaps you should read Integrating JavaFX into Swing Applications, and then refactor your code accordingly.


Try

public class Demo extends Application{
    private static JFXPanel javafxPanel;

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

    public static void initAndShowGUI() {
        JFrame frame = new JFrame("Swing application");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // Create JavaFX panel.
        javafxPanel = new JFXPanel();
        frame.getContentPane().add(javafxPanel, BorderLayout.CENTER);

        // Create JavaFX scene.
        Application.launch (Demo.class, null);

        // Show frame.
        frame.pack();
        frame.setVisible(true);
    }

    @Override
    public void start (Stage mainStage) {
        // Add scene to panel
        javafxPanel.setScene(createScene());
    }

    private static Scene createScene() {
        Text text = new Text("Hello World");
        text.setFont(new Font(24));
        text.setEffect(new Reflection());

        BorderPane pane = new BorderPane();
        pane.setCenter(text);
        Scene scene = new Scene(pane);

        return scene;
    }
}

When creating a scene, this example assumes that the code you ve included is valid.

问题回答

I was trying to add JFXPanel to JPanel and this solved the problem for me, might help you as well

jpanel1.setLayout(new FlowLayout());




相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签