Az蓑衣 2021-07-14 08:37 采纳率: 33.3%
浏览 54

javafx运行时线程报错

在运行主函数时,可以打开舞台,但是在点击功能的控件时,就报错了
下面是报错描述:

img

img

这里是主函数代码
public class MainApp extends Application {
private Stage stage;
private Scene scene;
//标识当前用户
private User user;

@Override
public void start(Stage primaryStage) {
    try {
        stage  = primaryStage;
        showLoginView();
        primaryStage.show();
    } catch(Exception e) {
        e.printStackTrace();
    }
}

/**
 *    显示登录界面
 */
public void showLoginView() {
    try {
        stage.setTitle("Login");
        stage.getIcons().add(new Image("file:images/login.png"));
        LoginViewController lgController = (LoginViewController)replaceSceneContent("login/LoginView.fxml");
        lgController.setMainApp(this);
    }catch(Exception e) {
        e.printStackTrace();
    }
}

/**
 *    显示忘记密码界面
 */
public void showForgetView() {
    try {
        stage.setTitle("Forget");
        ForgetViewController fgController = (ForgetViewController)replaceSceneContent("forget/ForgetView.fxml");
        fgController.setMainApp(this);
    }catch(Exception e) {
        e.printStackTrace();
    }
    
}

/**
 *    显示密保问题验证界面
 */
public void showSecretQuesView() {
    try {
        stage.setTitle("SecretQuestion");
        SecretQuesViewController sqController = (SecretQuesViewController)replaceSceneContent("forget/SecretQuesView.fxml");
        sqController.setMainApp(this);
    }catch(Exception e) {
        e.printStackTrace();
    }
}

/**
 *    显示重置密码界面
 */
public void showResetPasswdView() {
    try {
        stage.setTitle("ResetPasswdView");
        ResetPasswdViewController rpController = (ResetPasswdViewController)replaceSceneContent("forget/ResetPasswdView.fxml");
        rpController.setMainApp(this);
    }catch(Exception e) {
        e.printStackTrace();
    }
    
}

/**
 *    显示注册界面
 */
public void showRegistView() {
    try {
        
        stage.setTitle("Regist");
        stage.getIcons().add(new Image("file:images/regist.png"));
        
        FXMLLoader loader = new FXMLLoader();
        loader.setLocation(MainApp.class.getResource("regist/RegistView.fxml"));
        BorderPane bp = (BorderPane)loader.load();
        scene = new Scene(bp);
        stage.setScene(scene);
        stage.setResizable(false);
        
        RegistViewController regController = (RegistViewController)loader.getController();
        System.out.println(regController);
        regController.setMainApp(this);
        
    }catch(Exception e) {
        e.printStackTrace();
    }
}

/**
 *    显示写日记视图
 */
public void showWriteView() {
    try {
        stage.setTitle("Write");
        stage.getIcons().add(new Image("file:images/write.png"));
        
        WriteViewController wController = (WriteViewController)replaceSceneContent("write/WriteView.fxml");
        wController.setMainApp(this);
    }catch(Exception e) {
        e.printStackTrace();
    }    
}

/**
 *    显示查找日记视图
 */
public void showFindView() {
    try {
        stage.setTitle("Find");
        stage.getIcons().add(new Image("file:images/find.png"));
        
        FindViewController fController = (FindViewController)replaceSceneContent("find/FindView.fxml");
        fController.setMainApp(this);
    }catch(Exception e) {
        e.printStackTrace();
    }    
}

/**
 *    显示日记系统主界面
 */
public void showSystemView() {
    try {
        stage.setTitle("SDSystem");
        stage.getIcons().add(new Image("file:images/home.png"));
        
        SystemViewController sdController = (SystemViewController)replaceSceneContent("system/SystemView.fxml");
        sdController.setMainApp(this);
    }catch(Exception e) {
        e.printStackTrace();
    }
}

/**
 *    显示指定的视图
 */
private Object replaceSceneContent(String fxmlFile) {
    FXMLLoader loader = new FXMLLoader();
    loader.setLocation(MainApp.class.getResource(fxmlFile));
    
    AnchorPane ap = null;
    try {
        ap = (AnchorPane)loader.load();
    }catch(IOException e) {
        e.printStackTrace();
    }
    
    scene = new Scene(ap);
    stage.setScene(scene);
    stage.setResizable(false);
    
    return loader.getController();
    
}

/**
 *    获取scene
 */
public Scene getScene() {
    return scene;
}

/**
 *    获取Stage
 */
public Stage getStage() {
    return stage;
}

public User getUser() {
    return user;
}

public void setUser(User user) {
    this.user = user;
}

public static void main(String[] args) {
    launch(args);
}

}

  • 写回答

2条回答 默认 最新

  • 关注

    JavaFX已经不是jdk的一部分了,你需要使用javaFX SDK

    评论

报告相同问题?

问题事件

  • 创建了问题 7月14日

悬赏问题

  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题
  • ¥15 vs2019的js智能提示
  • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
  • ¥15 uniapp的h5项目写一个抽奖动画