【发布时间】: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(它使用MediaPlayer和Media)。它可以放置在 JavaFX 场景图中您需要的任何位置,例如在VBox等中。JFXPanel用于将 JavaFX 场景嵌入到 Swing 应用程序中;它是一个可以显示 JavaFX 场景的 Swing 组件。如果您不需要混合 Swing 和 JavaFX,请不要:您有很多棘手的多线程需要解决。只需使用纯 JavaFX 应用程序。 Tutorial -
是的。
MediaView是Node的子类;它可以添加到Pane或任何子类(从您的 FXML 看起来您希望它在VBox中)。