在窗格中调整SwingNode的大小

时间:2015-06-02 10:51:30

标签: java javafx javafx-2 fxml

我使用JavaFX相当新,我希望将一个JPanel添加到JavaFX窗格中。我目前的代码有效,但面板非常小。我希望能够调整它的大小,使其适合JavaFX窗格。

代码:

    // Add swing component to JFX
    final SwingNode swingNode = new SwingNode();

    createAndSetSwingContent(swingNode);
    detailPane.getChildren().add(swingNode);

创建Swing内容方法:

 private void createAndSetSwingContent(final SwingNode swingNode) {
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {

            //Create the  viewing pane.
            dataComponentDetailPane = new JEditorPane();
            dataComponentDetailPane.setEditable(false);
            dataDetailView = new JScrollPane(dataComponentDetailPane);

            // Create panel
            mainSwingPanel = new JPanel();
            mainSwingPanel.add(dataDetailView);
            swingNode.setContent(mainSwingPanel);
        }
    });
}

如何使SwingNode / JPanel适合JavaFX窗格的大小?

我使用FMXL创建Java FX窗格。提前致谢 !

2 个答案:

答案 0 :(得分:2)

我遇到了与你相同的问题,PanelSwingNode 之间确实存在问题,我不知道原因,但我找不到方法一起使用这两个。

现在我有2个解决方案

  • 您可以阅读this,如果您使用group致电:setAutosizeChildren(false),请说明解决方案。
  • 您可以在不使用JPanel的情况下实施SwingNode,只需将其放入您拥有的JavaFX Pane中,它就会自动适合。

如果这不起作用,请发布可编辑的代码。

答案 1 :(得分:0)

我有同样的问题,我的解决方法是:

  1. 使用“ AnchorPane”窗格:

 AnchorPane detailPane;

2。创建您的SwingNode(就像您一样):


createAndSetSwingContent(swingNode);;                       
// add the following code to make sure the swing node grows with the window.
AnchorPane.setTopAnchor(swingNode, 0d);
AnchorPane.setBottomAnchor(swingNode, 0d);
AnchorPane.setRightAnchor(swingNode, 0d);
AnchorPane.setLeftAnchor(swingNode, 0d);  

detailedPane.getChildren().add(swingNode); // Adding swing node