【问题标题】:JavaFX: Why doesn't the setContent method of SwingNode with a JComponent parameter accept a JPanel?JavaFX:为什么带有 JComponent 参数的 SwingNode 的 setContent 方法不接受 JPanel?
【发布时间】:2013-09-21 20:30:34
【问题描述】:

我有以下代码:

private void launchSingleRecordWindow() {
    SwingNode swingNode = new SwingNode();
    MainStageController.setContent(new AnchorPane(swingNode));
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            JPanel webcamPanel = new WebcamPanel(selectedWebcam);
            swingNode.setContent(webcamPanel);
        }
    });
}

但令我惊讶的是,字符串 swingNode.setContent(webcamPanel); 不正确。

IntelliJ IDEA 说:

java: incompatible types: javax.swing.JPanel cannot be converted to javax.swing.JComponent.

我尝试创建单独的类,但它仅适用于JComponent 的子类,但不适用于其子类,例如JFrameJPanel。怎么了?

【问题讨论】:

  • 那么,SwingNode 是什么? setContent(...) 的确切签名是什么?
  • @splunebob SwingNode 是 JavaFX8 的一个类。看这里:link
  • 好的,谢谢。我第一次回复时一定错过了javafx标签。
  • 如需尽快获得更好的帮助,请发帖SSCCE
  • 一个 JPanel 是一个 JComponent - 要么你的导入不正确,要么你没有运行你认为你正在运行的代码......

标签: java swing javafx-2 javafx-8 java-8


【解决方案1】:

它告诉您JFrame 不是JComponent。你猜怎么着?没错。

自己看看:JFrame API

【讨论】:

  • 是的,你是对的,这是我的错误......但我已经用 JPanel 完成了 - 结果是一样的。
  • 那么还有更多你没有讲述的故事。任何以JComponent 为参数的方法签名也将接受JPanelJPanel 的子类。总是。
  • @Eugene 你的代码一定有问题,它对我有用。
【解决方案2】:

JFrame 不是JComponent 子类,它是Component 子类,所以不能转换为JComponent

【讨论】:

    【解决方案3】:

    错误很奇怪:

    java: incompatible types: javax.swing.JPanel cannot be converted to javax.swing.JComponent
    

    因为...... JPanel 是一个 JComponent:

    Class JPanel
    java.lang.Object
       java.awt.Component
          java.awt.Container
             javax.swing.JComponent
                javax.swing.JPanel
    

    而且 SwingNode 确实接受 JComponent:

    public void setContent(javax.swing.JComponent content)
    

    所以......它应该可以将 JPanel 传递给 SwingNode::setContent

    检查您的代码或在详细模式下编译,看看错误是否是您认为的错误!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-05
      • 1970-01-01
      • 2021-04-29
      • 1970-01-01
      • 2022-09-23
      • 2023-04-06
      • 2011-10-27
      相关资源
      最近更新 更多