Ich kriege eine Fehler Messesage bei meinem Media Player

Jay_LP_

Aktives Mitglied
Ich wollte einen eigenen Media Player machen und habe mir ein Tutorial dazu angeguckt und jetzt weiß ich nicht mehr weiter

Ich habe die Bibliotheken via Maven hinzugefügt:

Code:
<dependency>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-controls</artifactId>
    <version>12.0.2</version>
</dependency>
<dependency>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-media</artifactId>
    <version>19-ea+9</version>
</dependency>

Java:
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;

public class clip {
    
    private Stage stage;
    private Scene scene;
    private BorderPane borderPane;
    private HBox hbox;
    
    private Media media;
    private MediaPlayer mediaPlayer;
    private MediaView mediaView;
    
    private String MEDIA_URL ="";
    
    private Button btnPlay;
    private Button btnPause;
    
    public clip() {
        
        stage = new Stage();
        
        stage.setTitle("Java test");
        borderPane = new BorderPane();
        
        media = new Media(MEDIA_URL);
        mediaPlayer = new MediaPlayer(media);
        mediaPlayer.setAutoPlay(true);
        mediaPlayer.setOnReady(() -> stage.sizeToScene());
        
        mediaView = new MediaView(mediaPlayer);
        
        borderPane.setCenter(mediaView);
        
        btnPlay = new Button(">");
        btnPause = new Button("||");
        
        hbox = new HBox(10);
        hbox.getChildren().addAll(btnPlay, btnPause);
        hbox.setPadding(new Insets(10));
        
        scene = new Scene(borderPane);
        stage.setScene(scene);
        stage.show();
        
    }

}

Und habe folgende Fehler Message:
Exception in thread "main" java.lang.ExceptionInInitializerError
at javafx.stage.Window.<init>(Window.java:1439)
at javafx.stage.Stage.<init>(Stage.java:252)
at javafx.stage.Stage.<init>(Stage.java:240)
at clip.<init>(clip.java:29)
at Maintest.main(Maintest.java:33)
Caused by: java.lang.IllegalStateException: This operation is permitted on the event thread only; currentThread = main
at com.sun.glass.ui.Application.checkEventThread(Application.java:441)
at com.sun.glass.ui.Screen.setEventHandler(Screen.java:369)
at com.sun.javafx.tk.quantum.QuantumToolkit.setScreenConfigurationListener(QuantumToolkit.java:727)
at javafx.stage.Screen.<clinit>(Screen.java:74)
... 5 more
 
aber du musst ja erstmal javafx "booten"

dh deine main sollte ungefähr so ausschauen, du darfst außerhalb des javafx threads keine stage oder nodes bauen.. du bist erst im javafx thread wenn du launch aufgerufen hast ( nicht exakt es gibt noch init und preloaders.. )
Java:
public class Main extends Application {
 public static void main(String[] args){
     launch(args);
 }
    public void start(Stage primaryStage){
        new Clip();
    }
}
 
aber du musst ja erstmal javafx "booten"

dh deine main sollte ungefähr so ausschauen
Java:
public class Main extends Application {
 public static void main(String[] args){
     launch(args);
 }
    public void start(Stage primaryStage){
        new Clip();
    }
}
Uh ja das kann sein… Ist das erste mal das ich mit JavaFX arbeite 😅 Ich probiere das nachher mal aus… Aber schonmal danke für die schnelle Hilfe
 
außerdem klassen werden in PascalCase geschrieben dh es müsste Clip heißen 😀

es gibt paar andere sachen am code aber die sind nicht so auffällig wie das
 

Zurück
Oben