java - JavaFX: 带有JComponent参数的SwingNode的setContent方法为什么不接受 JPanel?

  显示原文与译文双语对照的内容
0 0

我有以下代码:


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的子类,而不是它的子类,如 JFrame 或者 JPanel 时。 怎么了?

时间: 原作者:

0 0

它告诉你 JFrame 不是 JComponent 。 猜什么是的。

请参见:

原作者:
0 0

错误很奇怪:


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

如果你的代码或者代码处于详细模式,你可能会认为该错误是你认为是的 !

原作者:
...