Hey Leute!
Zu aller erst mein Code:
So und jetzt mein Problem. Zwar wird das Video abgespielt, allerdings wird nicht das gesamte ContentPane des JFrames damit ausgefüllt. Wie man die Skalierung des Videos vornehmen muss um das gesamte Fenster damit auszufüllen weiss ich schon. Allerdings bräuchte ich dafür Höhe und Breite meines Videos in Pixeln und wenn ich die über das Media Objekt bzw. das Media Objekt im MediaPlayer(nach dem hinzufügen) mit den Methoden getWidth() und getHeight() versuche an sie ranzukommen erhalte ich immer 0.
Woran liegt das?
Danke schonmal im Vorraus
Zu aller erst mein Code:
Java:
import java.io.File;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
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 RNVideoPlayer extends JFXPanel {
private Group root;
private Media media;
private MediaView view;
private MediaPlayer player;
private Scene scene;
public RNVideoPlayer(String uri) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
RNVideoPlayer.this.root = new Group();
RNVideoPlayer.this.scene = new Scene(RNVideoPlayer.this.root, RNVideoPlayer.this.getWidth(), RNVideoPlayer.this.getHeight());
RNVideoPlayer.this.media = new Media(uri);
RNVideoPlayer.this.player = new MediaPlayer(RNVideoPlayer.this.media);
RNVideoPlayer.this.player.setCycleCount(MediaPlayer.INDEFINITE);
RNVideoPlayer.this.player.setAutoPlay(true);
RNVideoPlayer.this.view = new MediaView(RNVideoPlayer.this.player);
RNVideoPlayer.this.root.getChildren().add(RNVideoPlayer.this.view);
RNVideoPlayer.this.setScene(scene);
RNVideoPlayer.this.setVisible(true);
}
});
}
public void play() {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
RNVideoPlayer.this.player.play();
}
});
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.add(new RNVideoPlayer(new File("video.mp4").toURI().toString()));
frame.setVisible(true);
}
}
Woran liegt das?
Danke schonmal im Vorraus