如何从另一个类调用JavaFX类?

时间:2016-02-10 15:37:11

标签: javafx

在我的项目中,我有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类来运行程序。怎么做 ?我写的代码不起作用可能是因为我有这个错误"找不到适合发布的方法"。

2 个答案:

答案 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);
    }
}

这假定:

  1. FXML文件和Controller的结构遵循通常的默认模式(即您在fx:controller属性中指定控制器类)
  2. 您的FXML文件与JavaApplication3类位于同一个包中。如果不是这种情况,您将需要修改传递给FXMLLoader.load(...)的路径。