我按照oracle显示的demo做的,可以在启动时有视频内容,但是经过跳转之后,视频内容就丢失了;
https://docs.oracle.com/javase/8/javafx/interoperability-tutorial/swing-fx-interoperability.htm
下面是我得demo;请熟悉这方面的帮忙看看,多谢
package com.king.code;
import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.net.URL;
public class VideoDemo {
public static void initVideoFrame() {
JFrame indexFrame = new JFrame ( );
indexFrame.setUndecorated (true);
indexFrame.setBounds (0, 0, 600, 700);
indexFrame.setBackground (Color.white);
Container root = indexFrame.getContentPane ( );
root.setLayout (null);
JButton button = new JButton ("按钮");
button.setBounds (indexFrame.getWidth ( ) / 2 - 30, 10, 80, 20);
button.setVisible (true);
button.addMouseListener (new MouseAdapter ( ) {
@Override
public void mouseClicked(MouseEvent e) {
indexFrame.dispose ( );
OrtherFrame ortherFrame = new OrtherFrame ( );
}
});
root.add (button);
JFXPanel jfxPanel = new JFXPanel ( );
jfxPanel.setBounds (0, 40, 540, 320);
jfxPanel.setVisible (true);
root.add (jfxPanel);
indexFrame.setVisible (true);
Platform.runLater (new Runnable ( ) {
@Override
public void run() {
initVFXPanel (jfxPanel);
}
});
}
private static class OrtherFrame extends JFrame {
public OrtherFrame() throws HeadlessException {
setUndecorated (true);
setBounds (0, 0, 400, 500);
setBackground (Color.white);
Container root = getContentPane ( );
root.setLayout (null);
JButton button = new JButton ("首页");
button.setBounds (getWidth ( ) / 2 - 30, 10, 90, 20);
button.setVisible (true);
button.addMouseListener (new MouseAdapter ( ) {
@Override
public void mouseClicked(MouseEvent e) {
SwingUtilities.invokeLater (new Runnable ( ) {
@Override
public void run() {
dispose ( );
VideoDemo.initVideoFrame ( );
}
});
}
});
root.add (button);
setVisible (true);
}
}
private static void initVFXPanel(JFXPanel VFXPanel) {
Scene scene = creatScene ( );
VFXPanel.setScene (scene);
}
/**
* 视频播放
*/
private static Scene creatScene() {
URL url = VideoDemo.class.getClassLoader ( ).getResource ("video/demo.mp4");
assert url != null;
Media media = new Media (url.toString ( ));
MediaPlayer player = new MediaPlayer (media);
MediaView viewer = new MediaView (player);
StackPane root = new StackPane ( );
Scene scene = new Scene (root);
// resize video based on screen size
viewer.fitWidthProperty ( ).set (540); //手动设定解析度(宽度)
viewer.fitHeightProperty ( ).set (320); //手动设定解析度(高度)
viewer.setPreserveRatio (true);
// add video to stackpane
root.getChildren ( ).add (viewer);
player.setCycleCount (MediaPlayer.INDEFINITE); //循环播放
player.play ( );
return (scene);
}
public static void main(String[] args) {
SwingUtilities.invokeLater (new Runnable ( ) {
@Override
public void run() {
VideoDemo.initVideoFrame ( );
}
});
}
}
窗口跳转以后是否可以重新加载视频呢?