可以创建JavaFX Application对象吗?

时间:2017-02-15 09:26:20

标签: java javafx

是否可以从javaFX创建一个Application对象?

public class Constructor
{
    public Constructor()
    {
        Application a = new Application()
        {
            @Override
            public void start(Stage window) throws Exception
            {

            }
        };
        a.launch();
    }
}

当我尝试运行它时,它现在给了我这个:

  

线程“main”中的异常java.lang.RuntimeException:错误:类net.whiteautumn.lightcast.Constructor不是javafx.application.Application的子类

我认为,这是由于课程Constructor没有延伸Application造成的。 有什么方法可以解决这个问题,或者这是推出JavaFX应用程序的唯一方法吗?

编辑: 我知道如何启动javaFX应用程序。我想要创建一个应用程序并将其放在一个对象中。这是可能的还是没有?

2 个答案:

答案 0 :(得分:0)

Application.launch()是一种静态方法,因此a.launch()相当于Application.launch()。这意味着它将尝试启动调用它的类的应用程序,即Constructor类。

正确的做法是:

private static class MyApp extends Application
{
    @Override
    public void start(Stage window) throws Exception
    {

    }
};

Application.launch(MyApp.class, null);

答案 1 :(得分:0)

你应该将Application扩展到初始化JavaFX Toolkit;并覆盖start方法以显示表单(JavaFx阶段)。显然,你需要主静态方法来运行应用程序。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.shape.Circle;
import javafx.scene.shape.CircleBuilder;
import javafx.stage.Stage;

public class Constrcutor extends Application {

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("JavaFX Abacus");
        Pane root = new Pane();

        Circle circle = CircleBuilder.create()
            .radius(20)
            .centerX(20)
            .centerY(20)
            .build();
        root.getChildren().add(circle);

        primaryStage.setScene(new Scene(root, 400, 400));
        primaryStage.show();
    }

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