Module  javafx.swing
软件包  javafx.embed.swing

Class SwingNode

  • All Implemented Interfaces:
    StyleableEventTarget


    public class SwingNode
    extends Node
    此类用于将Swing内容嵌入到JavaFX应用程序中。 要显示的内容使用接受Swing JComponent实例的setContent(javax.swing.JComponent)方法指定。 组件中包含的层次结构JComponent实例不应包含任何重量级组件,否则SwingNode可能无法绘制它。 内容自动重画。 所有的输入和焦点事件都将透明地转发给开发人员的JComponent实例。

    这是一个典型的模式,演示如何使用SwingNode

      public class SwingFx extends Application {
    
             @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, 100, 50));
                 stage.show();
             }
    
             private void createAndSetSwingContent(final SwingNode swingNode) {
                 SwingUtilities.invokeLater(new Runnable() {
                     @Override
                     public void run() {
                         swingNode.setContent(new JButton("Click me!"));
                     }
                 });
             }
    
             public static void main(String[] args) {
                 launch(args);
             }
         } 
    从以下版本开始:
    JavaFX 8.0
    • 构造方法详细信息

      • SwingNode

        public SwingNode​()
        构造一个新的实例 SwingNode
    • 方法详细信息

      • setContent

        public void setContent​(JComponent content)
        JComponent实例显示在这个SwingNode

        该方法可以在JavaFX应用程序线程或事件调度线程上调用。 但是请注意,对于Swing组件的访问必须根据Swing线程限制从事件调度线程发生。

        参数
        content - 显示在这个 SwingNode的Swing组件
        另请参见:
        EventQueue.isDispatchThread()Platform.isFxApplicationThread()
      • getContent

        public JComponent getContent​()
        返回附加到此SwingNodeJComponent实例。

        该方法可以在JavaFX应用程序线程或事件调度线程上调用。 但是请注意,对于Swing组件的访问必须根据Swing线程限制从事件调度线程发生。

        结果
        Swing组件附加到这个 SwingNode
        另请参见:
        EventQueue.isDispatchThread()Platform.isFxApplicationThread()
      • isResizable

        public boolean isResizable​()
        描述从类复制: Node
        指示该节点是否可以由父节点调整大小。 如果此方法返回true,那么在布局过程中,父节点将通过调用node.resize(width,height)来调整节点的大小(理想情况下在其大小范围内)。 所有区域,控件和WebView都是可调整大小的类,它们在应用所有尺寸和CSS样式信息后,依赖于他们的父母在布局期间调整大小。

        如果此方法返回false,那么在布局期间父()不能调整它大小(resize()是一个no-op),并且它应该返回其layoutBounds的最小,首选和最大大小。 组,文本和所有形状都不能调整大小,因此通过设置适当的属性(例如矩形的宽度/高度,文本上的文本等),依赖于应用程序来建立其大小。 在布局期间,仍然可以重新定位不可调整大小的节点。

        重写:
        isResizableNode
        结果
        该布局期间该节点类型是否可以由其父节点调整大小
        另请参见:
        Node.getContentBias()Node.minWidth(double)Node.minHeight(double)Node.prefWidth(double)Node.prefHeight(double)Node.maxWidth(double)Node.maxHeight(double)Node.resize(double, double)Node.getLayoutBounds()
      • prefWidth

        public double prefWidth​(double height)
        返回SwingNode用于布局计算的首选宽度。 该值对应于Swing组件的首选宽度。
        重写:
        prefWidthNode
        参数
        height - 如果首选宽度取决于应该使用的高度
        结果
        在布局期间,节点应该调整大小的首选宽度
        另请参见:
        Node.isResizable()Node.getContentBias()Node.autosize()
      • prefHeight

        public double prefHeight​(double width)
        返回SwingNode用于布局计算的首选高度。 该值对应于Swing组件的首选高度。
        重写:
        prefHeight中的 Node
        参数
        width - 如果偏好的高度取决于应该使用的宽度
        结果
        在布局期间,节点应该调整大小的首选高度
        另请参见:
        Node.getContentBias()Node.autosize()
      • maxWidth

        public double maxWidth​(double height)
        返回SwingNode的最大宽度,用于布局计算。 该值对应于Swing组件的最大宽度。
        重写:
        maxWidthNode
        参数
        height - 如果最大宽度取决于应该使用的高度
        结果
        布局期间节点应调整大小的最大宽度
        另请参见:
        Node.isResizable()Node.getContentBias()
      • maxHeight

        public double maxHeight​(double width)
        返回SwingNode用于布局计算的最大高度。 该值对应于Swing组件的最大高度。
        重写:
        maxHeightNode
        参数
        width - 如果最大高度取决于应该使用的宽度
        结果
        节点在布局期间应该调整大小的最大高度
        另请参见:
        Node.isResizable()Node.getContentBias()
      • minWidth

        public double minWidth​(double height)
        返回SwingNode用于布局计算的最小宽度。 该值对应于Swing组件的最小宽度。
        重写:
        minWidthNode
        参数
        height - 如果最小宽度取决于应该使用的高度
        结果
        布局期间节点应该调整大小的最小宽度
        另请参见:
        Node.isResizable()Node.getContentBias()
      • minHeight

        public double minHeight​(double width)
        返回SwingNode的最小高度用于布局计算。 该值对应于Swing组件的最小高度。
        重写:
        minHeightNode
        参数
        width - 如果最小高度取决于应该使用的宽度
        结果
        节点在布局期间应调整大小的最小高度
        另请参见:
        Node.isResizable(), Node.getContentBias()