javaFX launch()不工作

javaFX launch()不工作,java,swing,javafx,Java,Swing,Javafx,我正在尝试使用JavaFX设置一个视频在JFrame中播放 但是,一旦我调用launch()函数来设置JavaFX并播放视频,就会出现以下错误 应用程序构造函数中的异常 线程“AWT-EventQueue-0”java.lang.RuntimeException中出现异常:无法构造应用程序实例:类mvap.mvap\u PlayVideo 有人知道我做错了什么吗 public MVAP_PlayVideo() { MVAP.CheckJFrame(); //ensure MVAP.jF

我正在尝试使用JavaFX设置一个视频在JFrame中播放

但是,一旦我调用launch()函数来设置JavaFX并播放视频,就会出现以下错误

应用程序构造函数中的异常 线程“AWT-EventQueue-0”java.lang.RuntimeException中出现异常:无法构造应用程序实例:类mvap.mvap\u PlayVideo

有人知道我做错了什么吗

public MVAP_PlayVideo() 
{
    MVAP.CheckJFrame(); //ensure MVAP.jFrame still exists, recreate if it doesn't
    jFrame = MVAP.jFrame; //set my jFrame to the MVAP.jFrame
    MVAP.ClearFrame(); //clear components in the MVAP.jFrame

    URL = MVAP.URL; //retrieve media URL from MVAP.URL
    initComponents(); //Set new jFrame components

    //get Video Dimensions
        //Set JFrame dimensions to Video Dimensions
        //jFrame.SetSize();

    launch(); //launch video. Program stops working here.
}

@Override public void start(final Stage stage)
{
    final JFXPanel fxPanel = new JFXPanel(); //create new panel. After launch();, it's meant to reach here
    Media media = new Media(URL); //create new Mesia
    final MediaPlayer player = new MediaPlayer(media); //create new media player
    //Set Media Player Position
    fxPanel.setScene(new Scene(new Group(new MediaView(player)), 300, 200)); //Set Dimensions to media dimensions
    jFrame.add(fxPanel); //add panel to Frame
    jFrame.setVisible(true); //set frame to Visible
    player.play(); //play media
}
这是整个班级

package mvap;


import javafx.application.Application;
import javafx.embed.swing.JFXPanel;
import javafx.scene.*;
import javafx.scene.media.*;
import javafx.stage.Stage;
import javax.swing.JFrame;

public class MVAP_PlayVideo extends Application
{

    public static JFrame jFrame = null; //my jFrame
    String URL = null; //media URL

    public MVAP_PlayVideo() 
    {
        MVAP.CheckJFrame(); //ensure MVAP.jFrame still exists, recreate if it doesn't
        jFrame = MVAP.jFrame; //set my jFrame to the MVAP.jFrame
        MVAP.ClearFrame(); //clear components in the MVAP.jFrame

        URL = MVAP.URL; //retrieve media URL from MVAP.URL
        initComponents(); //Set new jFrame components

        //get Video Dimensions
            //Set JFrame dimensions to Video Dimensions
            //jFrame.SetSize();

        launch(); //launch video. Program stops working here.
    }

    @Override public void start(final Stage stage)
    {
        final JFXPanel fxPanel = new JFXPanel(); //create new panel. After launch();, it's meant to reach here
        Media media = new Media(URL); //create new Mesia
        final MediaPlayer player = new MediaPlayer(media); //create new media player
        //Set Media Player Position
        fxPanel.setScene(new Scene(new Group(new MediaView(player)), 300, 200)); //Set Dimensions to media dimensions
        jFrame.add(fxPanel); //add panel to Frame
        jFrame.setVisible(true); //set frame to Visible
        player.play(); //play media
    }

    private void initComponents() {

        jLabel2 = new javax.swing.JLabel();
        jLabel1 = new javax.swing.JLabel();


        jLabel2.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N
        jLabel2.setText("Watch Video");

        jLabel1.setForeground(new java.awt.Color(0, 0, 255));
        jLabel1.setText("Back");
        jLabel1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jLabel1MouseClicked(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(jFrame.getContentPane());
        jFrame.getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 225, Short.MAX_VALUE)
                .addComponent(jLabel1)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel1)
                    .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(241, Short.MAX_VALUE))
        );
        jFrameadd();
        jFrame.pack();
    }// </editor-fold>                        

    private void jFrameadd()
    {
        jFrame.add(jLabel2);
        jFrame.add(jLabel1);
    }

    private void jLabel1MouseClicked(java.awt.event.MouseEvent evt) {
        MVAP.ClearFrame();
        new MVAP_MemberOptions(MVAP.MVAPDatabase,MVAP.accessLevel);
    }                                    


    // Variables declaration - do not modify                     
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    // End of variables declaration                   
}
封装mvap;
导入javafx.application.application;
导入javafx.embed.swing.JFXPanel;
导入javafx.scene.*;
导入javafx.scene.media.*;
导入javafx.stage.stage;
导入javax.swing.JFrame;
公共类MVAP_播放视频扩展应用程序
{
公共静态JFrame JFrame=null;//我的JFrame
字符串URL=null;//媒体URL
公共MVAP_播放视频()
{
MVAP.CheckJFrame();//确保MVAP.jFrame仍然存在,如果不存在,请重新创建
jFrame=MVAP.jFrame;//将我的jFrame设置为MVAP.jFrame
MVAP.ClearFrame();//清除MVAP.jFrame中的组件
URL=MVAP.URL;//从MVAP.URL检索媒体URL
initComponents();//设置新的jFrame组件
//获取视频尺寸
//将JFrame维度设置为视频维度
//jFrame.SetSize();
launch();//启动视频。程序在此停止工作。
}
@覆盖公共无效开始(最后阶段)
{
final JFXPanel fxPanel=new JFXPanel();//创建新面板。启动()后,它将到达此处
媒体=新媒体(URL);//创建新媒体
最终媒体播放器=新媒体播放器(媒体);//创建新媒体播放器
//设置媒体播放器位置
fxPanel.setScene(新场景(新组(新媒体视图(播放器)),300200));//将维度设置为媒体维度
jFrame.add(fxPanel);//将面板添加到框架
jFrame.setVisible(true);//将frame设置为Visible
player.play();//播放媒体
}
私有组件(){
jLabel2=newjavax.swing.JLabel();
jLabel1=newjavax.swing.JLabel();
jLabel2.setFont(新的java.awt.Font(“Tahoma”,0,24));//NOI18N
jLabel2.setText(“观看视频”);
set前台(新java.awt.Color(0,0255));
jLabel1.setText(“背面”);
jLabel1.addMouseListener(新java.awt.event.MouseAdapter(){
public void mouseClicked(java.awt.event.MouseEvent evt){
jLabel1鼠标单击(evt);
}
});
javax.swing.GroupLayout=newjavax.swing.GroupLayout(jFrame.getContentPane());
jFrame.getContentPane().setLayout(布局);
layout.setHorizontalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,225,Short.MAX_值)
.addComponent(jLabel1)
.addContainerGap())
);
layout.setVerticalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1)
.addComponent(jLabel2,javax.swing.GroupLayout.PREFERRED_SIZE,48,javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(241,简称最大值))
);
jFrameadd();
jFrame.pack();
}//                         
私有void jFrameadd()
{
jFrame.add(jLabel2);
jFrame.add(jLabel1);
}
私有void jlabelmouseclicked(java.awt.event.MouseEvent evt){
MVAP.ClearFrame();
新的MVAP_成员选项(MVAP.MVAPDatabase、MVAP.accessLevel);
}                                    
//变量声明-不修改
私有javax.swing.JLabel jLabel1;
私有javax.swing.JLabel jLabel2;
//变量结束声明
}

使用
应用程序.launch()
方法启动独立的JavaFX应用程序

但是您正在尝试将JavaFX内容集成到Swing应用程序中。请阅读以下Oracle官方文档:

还有更多:

如果要将JavaFX内容添加到Swing应用程序中,必须使用添加到Swing容器中的包装器,并且必须从JavaFX线程初始化JavaFX面板,如下所示:

JFrame frame = new JFrame("Swing and JavaFX");
final JFXPanel fxPanel = new JFXPanel();
frame.add(fxPanel);

Platform.runLater(new Runnable() {
    @Override
    public void run() {
        // This method is invoked on the JavaFX thread
        Scene scene = ...; // Create your scene
        fxPanel.setScene(scene);
    }
});

这是JavaFX2.1吗?你能把你的全班都发出来吗?我相信这是最新的版本。我不太确定如何检查以及从何处/如何称呼这个
MVAP\u PlayVideo
class?从一个单独的类。调用MVAP_DisplaySearchResults类。新MVAP_播放视频();