JavaFx:Application start方法中的异常

时间:2017-12-14 21:04:36

标签: java javafx

我正在尝试创建一个JavaFX程序,每当我从jfoenix库中添加任何东西时我都会尝试运行我的代码我得到一个例外 - 我不完全确定它是什么虽然意味着......

我的代码是:

public class home extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("home.fxml"));
        Scene scene = new Scene(root,1300,768);
        scene.getStylesheets().add(getClass().getResource("Style.css").toExternalForm());
        stage.setScene(scene);
        stage.show();

     }

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

我的控制器是:

public class HomeController implements Initializable {

    @FXML
    private JFXButton log;

    @FXML
    private JFXButton engr;

    @FXML
    private Pane login,eng;

    @FXML
    private void changeofpages(MouseEvent event) {
        if (event.getTarget()== log){
            login.setVisible(true);
            eng.setVisible(false);
        }else
            if (event.getTarget()== engr){
            eng.setVisible(true);
            login.setVisible(false);
        }
    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }    
}

1 个答案:

答案 0 :(得分:0)

这个问题经常在javaFx中重复,我的意思是这个例外:

  

应用程序启动方法中的异常

因为您没有发布您的堆栈跟踪任何人都可以找到您的问题,我建议您确定以下事项:

在您的主要申请中:

  1. 确保fxml文件的路径正确无误。
  2. 确保css文件的路径正确无误。
  3. 在您的控制器中:

    1. 确保fxml中存在节点fx:id并且它是正确的。
    2. 请务必导入活动类。
    3.   

      有时候你会找到相同的类名,但它会有不同的包

      我举例说明了MouseEvent包和awt包中存在的javafx

      我尝试用所有条件编写代码,它调用异常,因为它可以找到Style.css(可能这是错误),但之后一切都很好:

      这是您的主要应用:     package stackoverflow;

      import java.io.IOException;
      import javafx.application.Application;
      import javafx.fxml.FXMLLoader;
      import javafx.scene.Parent;
      import javafx.scene.Scene;
      import javafx.stage.Stage;
      
      /**
       *
       * @author Xlint Xms
       */
      public class home extends Application {
      
          @Override
          public void start(Stage stage) throws Exception {
              Parent root = FXMLLoader.load(getClass().getResource("home.fxml")); //Be sure of your path
              Scene scene = new Scene(root, 1300, 768);
               scene.getStylesheets().add(getClass().getResource("Style.css").toExternalForm());//Be sure of your Style.css file
              stage.setScene(scene);
              stage.show();
      
          }
      
          public static void main(String[] args) {
              launch(args);
          }
      }
      

      你的控制器:

      public class HomeController implements Initializable {
      
          @FXML
          private JFXButton log;
      
          @FXML
          private JFXButton engr;
      
          @FXML
          private Pane login,eng;
      
          /*Be sure of MouseEvent class :It is in javafx package not awt package*/
          @FXML
          private void changeofpages(MouseEvent event) {
              if (event.getTarget() == log) {
                  login.setVisible(true);
                  eng.setVisible(false);
              } else if (event.getTarget() == engr) {
                  eng.setVisible(true);
                  login.setVisible(false);
              }
          }
          @Override
          public void initialize(URL location, ResourceBundle resources) {
          }
      

      这段代码对我有用,我也希望你。