在窗格中调整 SwingNode 的大小

Resize SwingNode in Pane

我对使用 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 面板。提前致谢 !

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

现在我有 2 个解决方案 :

  • 您可以阅读 this 如果您使用 group 调用:setAutosizeChildren(false) 就像解决方案一样。
  • 你可以不使用JPanel实现SwingNode,只要把它放在你已有的JavaFX Pane中,它会自动适应。

如果这不起作用,post 可编译代码。

我也遇到了同样的问题,我的解决方法是:

  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