在我的项目中,我有3个文件:
FXMLController.java 这是一个JavaFX文件
FXML.fxml 这是另一个JavaFX文件
JavaApplication3.java 此文件只包含我的主要方法:
public class JavaApplication3 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException {
// TODO code application logic here
//new NewJFrame().setVisible(true);
Application.launch(FXMLController.class);
}
}
我想从我的main方法启动我的FXMLController类来运行程序。怎么做 ?我写的代码不起作用可能是因为我有这个错误"找不到适合发布的方法"。
答案 0 :(得分:1)
看起来你不了解JavaFX的流程。
您只能拥有一个应用程序。
在你的情况下,我想 JavaApplication3.java 。
让这个类扩展javafx.application.Application并调用它的主Application.launch(JavaApplication3.class);
在JavaApplication3的start方法中,您需要调用 FXMLLoader 来加载 FXML.fxml 并创建 FXMLController.java < / p>
看看这里: https://docs.oracle.com/javafx/2/get_started/fxml_tutorial.htm
答案 1 :(得分:0)
当您加载指定其类的FXML文件时,将创建控制器。必须使用Application
的子类启动JavaFX应用程序。您应该将start()
中的Application
方法视为常规Java应用程序中的main方法的等效方法:
import javafx.application.Application ;
import javafx.stage.Stage ;
import javafx.scene.Scene ;
import javafx.scene.Parent ;
import javafx.fxml.FXMLLoader ;
import java.io.IOException ;
public class JavaApplication3 extends Application {
@Override
public void start(Stage primaryStage) throws IOException {
Parent root = FXMLLoader.load(getClass().getResource("FXML.fxml"));
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
}
// for the benefit of environments that don't support direct launch
// of JavaFX Applications:
public static void main(String[] args) {
launch(args);
}
}
这假定:
fx:controller
属性中指定控制器类)JavaApplication3
类位于同一个包中。如果不是这种情况,您将需要修改传递给FXMLLoader.load(...)
的路径。