【问题标题】:put a JFXPANEL into a Pane将 JFXPANEL 放入窗格
【发布时间】:2016-01-22 16:24:08
【问题描述】:

我想将 JFXPanel 用于视频播放器。 我使用 fxml 文件来设计应用程序。 (不适用于视频播放器本身)

...
<VBox>
      <Pane id="VideoEmbedded" fx:id="VideoEmbedded" style="- fx-background-color: #111111;" VBox.vgrow="ALWAYS" />
      <HBox alignment="CENTER" prefWidth="600.0" spacing="8.0" />        
 </VBox>
...

我只想“替换”意味着用我的 JFXPanel 填充窗格(“VideoEmbedded”)。

//inside the controller
final JFXPanel JFXPanel_VideoEmbedded= new JFXPanel();

@FXML
private JPanel VideoEmbedded;
...
//inside the videoplayer function
VideoEmbedded.add(JFXPanel_VideoEmbedded); //this doesn't work

如何将 JFXPanel 添加到 DOM-Hirarchy 中的正确位置?

【问题讨论】:

  • 我不明白为什么你的 JPanel 是在你的 Controller 类中定义的。您是否在 FXML 中定义它?如果是这样,您如何管理documentation 中描述的线程问题? (如果没有,为什么要注释 @FXML 以及如何初始化它?)而且...您的 FXML 文件将 VideoEmbedded 定义为 Pane 但您的控制器将其声明为 JPanel,即显然不兼容。
  • 所以真的不清楚(委婉地说)你想从这些微小的代码 sn-ps 中做什么。你能解释一下你真正想要达到的目标吗?为什么需要混合 Swing 组件和 JavaFX 组件?
  • 好的,我的意图是在窗格中显示视频。但我相信只有在 JFXPanels 中才有可能。我通过定义它来进行斗争可以播放视频。(我现在只能听到音频)在 Jquery 中,我只需 $('#JFXPanel_VideoEmbedded').appendTo("#VideoEmbedded");
  • 这根本不是真的。播放视频的 JavaFX 组件是 MediaView(它使用 MediaPlayerMedia)。它可以放置在 JavaFX 场景图中您需要的任何位置,例如在VBox 等中。JFXPanel 用于将 JavaFX 场景嵌入到 Swing 应用程序中;它是一个可以显示 JavaFX 场景的 Swing 组件。如果您不需要混合 Swing 和 JavaFX,请不要:您有很多棘手的多线程需要解决。只需使用纯 JavaFX 应用程序。 Tutorial
  • 是的。 MediaViewNode 的子类;它可以添加到 Pane 或任何子类(从您的 FXML 看起来您希望它在 VBox 中)。

标签: java javafx fxml


【解决方案1】:

您正在混合使用 Java SwingJavaFX(较旧的技术和较新的技术) JPanel VideoEmbedded 是 Java Swing JFXPanel JFXPanel_VideoEmbedded 是 JavaFX

查看此线程 Adding JFXPanel to a JFrame. Why is it not working? 和上面的链接

【讨论】:

    【解决方案2】:
     panel.add(jfxPanel, BorderLayout.CENTER);
    

    https://docs.oracle.com/javafx/2/swing/swing-fx-interoperability.htm

    或使用 JavaFX 场景生成器(Eclipse、Netbeans、...)

    【讨论】:

    • 最简单的方法是使用 JavaFX 场景构建器之类的可视化布局工具
    • More recent version of the link 在这个答案中。
    • 我实际上将场景用于 fxml 文件 ;-) 我只是无法在其中插入 JFXPanel。
    猜你喜欢
    • 2023-03-04
    • 2015-09-29
    • 1970-01-01
    • 2014-11-23
    • 2011-06-30
    • 2013-12-23
    • 2017-01-29
    • 1970-01-01
    相关资源
    最近更新 更多