java—无法在其他类中使用javafx程序的静态方法

kcwpcxri  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(295)

我创建了一个方法,在调用时显示一个包含适当信息的对话框。我创建了另一个测试类来调用和测试前面提到的方法。当我使用这个测试类调用这个方法时,它显示了一些我无法解决的错误。提前谢谢。。。

package my_classes;

    import javafx.stage.*;
    import javafx.geometry.Pos;
    import javafx.scene.*;
    import javafx.scene.control.*;
    import javafx.scene.layout.*;

    public class MessageBox
    {
        public static void show(String label, String button, String title, int xaxis, int yaxis)
        {
            Stage window=new Stage();
            Scene sc;
            Button btn=new Button(button);
            btn.setOnAction(e -> window.close());
            Label lbl=new Label(label);
            window.setTitle(title);
            VBox vb=new VBox(50);
            vb.getChildren().addAll(lbl,btn);
            vb.setAlignment(Pos.CENTER);
            sc=new Scene(vb,xaxis,yaxis);
            window.setMaxHeight(yaxis+100);
            window.setMaxWidth(xaxis+100);
            window.setMinHeight(yaxis-100);
            window.setMinWidth(xaxis-100);
            window.initModality(Modality.APPLICATION_MODAL);
            window.setScene(sc);
            window.showAndWait();
        }
    }
package my_classes;

    public class test
    {
        public static void main(String args[])
        {
            MessageBox.show("This is a piece of text", "OK", "Test", 500, 300);
        }
    }

“错误消息的图像”

xbp102n0

xbp102n01#

您需要使用普通的javafx应用程序启动过程。这意味着从应用程序类继承并使用 launch() 方法以正确初始化javafx运行时。
例如:

public class MyApplication extends Application {
    /**
     * Initialize the application
     *
     * @param args The application arguments
     */
    public static void main(final String[] args) {
        launch(args);
    }

    @Override
    public void start(final Stage primaryStage) {
       // Code here
    }
}

请慢慢阅读javafx文档:
https://openjfx.io/javadoc/15/

相关问题