暂停发布JavaFX

暂停发布JavaFX,javafx,Javafx,我正在尝试用JavaFX构建一个媒体播放器。首先,我加载了一个视频,然后我创建了暂停按钮,工作正常。当我用“打开”按钮(“apri”)加载新视频时,视频会工作,但“暂停”按钮不能正常工作-这里是我的主类。。我没有使用scenebuilder,但我只尝试使用代码 public class Main extends Application { public String indirizzo = "file:///C:/Users/ASUS/Desktop/film/prova1.mp4"; @O

我正在尝试用JavaFX构建一个媒体播放器。首先,我加载了一个视频,然后我创建了暂停按钮,工作正常。当我用“打开”按钮(“apri”)加载新视频时,视频会工作,但“暂停”按钮不能正常工作-这里是我的主类。。我没有使用scenebuilder,但我只尝试使用代码

public class Main extends Application {

public String indirizzo = "file:///C:/Users/ASUS/Desktop/film/prova1.mp4";

@Override
public void start(Stage primaryStage) {
    try {
        /* Creo la scena e mi faccio passare il media da visualizzare */

        /* Creo i pannelli */
        BorderPane bp = new BorderPane();
        StackPane sp = new StackPane();
        HBox hb = new HBox(5);
        VBox vb = new VBox();

        /* Primo video */
        MediaView mv = new MediaView();
        Media m = new Media(indirizzo);
        MediaPlayer mp = new MediaPlayer(m);
        mv.setMediaPlayer(mp);
        mp.play();

        /* Creo gli oggetti nella parte bassa*/
        Slider misc = new Slider();
        Slider sl = new Slider();
        Label volume = new Label("Volume: ");

        Button btn1 = new Button("Apri");
        Button btn2 = new Button("<<");
        Button btn3 = new Button("| |");
        Button btn4 = new Button(">>");

        hb.setAlignment(Pos.CENTER);
        hb.setPadding(new Insets(5,10,5,10));
        /* Dimensioni slider */
        sl.setPrefWidth(70);
        sl.setMinWidth(30);
        sl.setValue(100);

        /* Posiziono i pannelli */
        bp.setCenter(mv);
        hb.getChildren().addAll(btn1,btn2,btn3,btn4,volume,sl);


        vb.getChildren().addAll(misc,hb);
        bp.setBottom(vb);


        /* Se schiaccio il pulsante apri */
        btn1.setOnAction(new EventHandler<ActionEvent>() {
                @Override public void handle(ActionEvent e) {

                    /* Prima metto in pausa il video */

                    FileChooser fc = new FileChooser();
                    ExtensionFilter filtro = new ExtensionFilter("Seleziona media (*.mp4)","*.mp4");
                    fc.getExtensionFilters().add(filtro);

                    /* Apro la finestra di dialogo per caricare il file */
                    File file = fc.showOpenDialog(null);
                    indirizzo = file.toURI().toString();

                    if(file != null){
                        /* Carico il media nel mp */
                        Media m = new Media(indirizzo);

                        MediaPlayer mp = new MediaPlayer(m);
                        mv.setMediaPlayer(mp);
                        /* Imposto dimensione Media View*/
                        mv.setFitHeight(500);   /* Vanno bindate con la scene*/
                        mv.setFitWidth(500);
                        mp.play();

                        DoubleProperty mvw = mv.fitWidthProperty();
                        DoubleProperty mvh = mv.fitHeightProperty();
                        mvw.bind(Bindings.selectDouble(mv.sceneProperty(), "width"));
                        mvh.bind(Bindings.selectDouble(mv.sceneProperty(), "height"));
                        mv.setPreserveRatio(true);


                    }

                }
            });

        btn3.setOnAction((ActionEvent e) -> {
            Status currentStatus = mp.getStatus();

            if(currentStatus == Status.PLAYING)
                mp.pause();
            else if(currentStatus == Status.PAUSED || currentStatus == Status.STOPPED){
                mp.play();
            }

        });


        Scene scena = new Scene(bp,500,500);
        scena.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
        primaryStage.setScene(scena);
        primaryStage.show();
    } catch(Exception e) {
        e.printStackTrace();
    }
}

public static void main(String[] args) {
    launch(args);
}
public类主扩展应用程序{
公共字符串indirizzo=”file:///C:/Users/ASUS/Desktop/film/prova1.mp4";
@凌驾
公共无效开始(阶段primaryStage){
试一试{
/*在视觉化的媒体中,我看到了一个场景*/
/*克雷奥·潘内利酒店*/
BorderPane bp=新的BorderPane();
StackPane sp=新的StackPane();
HBox hb=新的HBox(5);
VBox vb=新的VBox();
/*Primo视频*/
MediaView mv=新的MediaView();
媒体m=新媒体(indirizzo);
MediaPlayer mp=新的MediaPlayer(m);
mv.setMediaPlayer(mp);
下院议员play();
/*克里奥·格利·奥盖蒂·内拉·帕特·巴萨*/
Slider misc=新滑块();
Slider sl=新滑块();
标签卷=新标签(“卷:”);
按钮btn1=新按钮(“Apri”);
按钮btn2=新按钮(“”);
hb.设置校准(位置中心);
hb.设置填充(新插图(5,10,5,10));
/*维度滑块*/
sl.setPrefWidth(70);
sl.setMinWidth(30);
sl.setValue(100);
/*潘内利酒店*/
设置中心(mv);
hb.getChildren().addAll(btn1、btn2、btn3、btn4、volume、sl);
vb.getChildren().addAll(misc,hb);
bp.setBottom(vb);
/*这是一个很好的例子*/
btn1.setOnAction(新的EventHandler(){
@重写公共无效句柄(ActionEvent e){
/*pausa il视频中的Prima metto*/
FileChooser fc=新建FileChooser();
ExtensionFilter filtro=新的ExtensionFilter(“Seleziona介质(*.mp4)”,“*.mp4”);
fc.getExtensionFilters().add(filtro);
/*每个caricare il文件的对话框*/
File File=fc.showOpenDialog(null);
indirizzo=file.toURI().toString();
如果(文件!=null){
/*加共体媒体公司*/
媒体m=新媒体(indirizzo);
MediaPlayer mp=新的MediaPlayer(m);
mv.setMediaPlayer(mp);
/*媒体视图的维度设置*/
mv.setFitHeight(500);/*Vanno bindate现场*/
中压固定宽度(500);
下院议员play();
DoubleProperty mvw=mv.fitWidthProperty();
DoubleProperty mvh=mv.fitHeightProperty();
bind(Bindings.selectDouble(mv.sceneProperty(),“width”);
bind(Bindings.selectDouble(mv.sceneProperty(),“height”);
mv.设定值比(真);
}
}
});
btn3.设置动作((动作事件e)->{
Status currentStatus=mp.getStatus();
如果(currentStatus==状态.播放)
mp.pause();
else if(currentStatus==Status.PAUSED | | currentStatus==Status.STOPPED){
下院议员play();
}
});
场景场景A=新场景(bp,500500);
scena.getStylesheets().add(getClass().getResource(“application.css”).toExternalForm());
初生阶段:西新世(scena);
primaryStage.show();
}捕获(例外e){
e、 printStackTrace();
}
}
公共静态void main(字符串[]args){
发射(args);
}
问题出在这里:

               if(file != null){
                    /* Carico il media nel mp */
                    Media m = new Media(indirizzo);

                    MediaPlayer mp = new MediaPlayer(m);
您正在使用新变量
mp
,该变量对
btn3.setOnAction()处理程序不可见


要解决此问题,请将
MediaPlayer mp
设置为类字段,并且不要使用
mp
名称引入新变量。

您是否尝试过调试btn3 onAction方法?