Swing和javafx
我正在尝试将调整大小的媒体播放器放在swing选项卡窗格中。我能找到的调整媒体大小的唯一方法是使用媒体视图。但是当我尝试添加控制器时,我得到的MediaControl无法转换为javafx.scene.Group 我的代码是Swing和javafx,java,swing,javafx,Java,Swing,Javafx,我正在尝试将调整大小的媒体播放器放在swing选项卡窗格中。我能找到的调整媒体大小的唯一方法是使用媒体视图。但是当我尝试添加控制器时,我得到的MediaControl无法转换为javafx.scene.Group 我的代码是 import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTabbedPane; import javax.swing.SwingUtilities; import javafx.ap
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.SwingUtilities;
import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
public class JavaFX_insideTab {
private static final String MEDIA_URL = "http://download.oracle.com/otndocs/products/javafx/oow2010-2.flv";
private static void initFxLater(JFXPanel panel) {
Group root = new Group();
Scene scene = new Scene(root, 450, 200);
// create media player
Media media = new Media(MEDIA_URL);
MediaPlayer mediaPlayer = new MediaPlayer(media);
mediaPlayer.setAutoPlay(true);
MediaView mediaView = new MediaView(mediaPlayer);
mediaView.setFitWidth(450);
mediaView.setFitHeight(200);
MediaControl mediaControl = new MediaControl(mediaPlayer);
scene.setRoot(mediaControl);
((Group) scene.getRoot()).getChildren().add(mediaView);
panel.setScene(scene);
}
private static void initSwingLater() {
JFrame jFrame = new JFrame("- JFrame -");
jFrame.setSize(540, 426);
jFrame.setVisible(true);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.getContentPane().setLayout(null);
final JFXPanel jFXPanel = new JFXPanel();
jFXPanel.setBounds(0, 0, 540, 188);
JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
tabbedPane.setBounds(0, 0, 528, 392);
jFrame.getContentPane().add(tabbedPane);
JPanel panel = new JPanel();
tabbedPane.addTab("New tab", null, panel, null);
JPanel playerpanel = new JPanel();
tabbedPane.addTab("Media Player", null, playerpanel, null);
JPanel panel_1 = new JPanel();
playerpanel.add(jFXPanel);
Platform.runLater(new Runnable() {
@Override
public void run() {
initFxLater(jFXPanel);
}
});
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
initSwingLater();
}
});
}
}
我哪里出错了?假设它已经是一个子类,所以不需要将它放在父类中
您可以使用以下代码:
private static void initFxLater(JFXPanel panel) {
MediaPlayer mediaPlayer = new MediaPlayer(new Media(MEDIA_URL));
mediaPlayer.setAutoPlay(true);
MediaView mediaView = new MediaView(mediaPlayer);
mediaView.setFitWidth(450);
mediaView.setFitHeight(200);
panel.setScene(new Scene(new MediaControl(mediaPlayer));
}
我不太清楚您所说的“调整媒体大小”是什么意思,但上面的代码将始终调整媒体大小,使其适合大小为450x200的边界框(默认情况下保留媒体的大小比例)。感谢您的回答,它使我更接近我的目标。然而,这似乎产生了一个10毫米高的播放器与一个无标度的电影。我想做的是创建一个小型(400 x 200英寸)的电影,并在一个选项卡式窗格中使用媒体控件。按比例缩放的电影,我的意思是,所有的电影都适合400 x 200控件。我希望这有帮助。