首页 > 解决方案 > 将 Perametertype 转换为类不起作用

问题描述

我正在研究 JavaFx。我想显示 javaFX 类中使用的节点数。因为我得到了类及其启动方法。

NodeClassTree是一个 javaFX 类,我只使用 start 方法和

在下面的代码中,我得到了 start 方法。我将方法的参数作为一个类。

但我不能将该类转换为StageClass 对象。

public static void main(String[] args)
    {
        try
        {
            Method myClasss = NodeClassTree.class.getDeclaredMethod("start",Stage.class);

            System.out.println(myClasss.getParameterTypes()[0].getCanonicalName());

            Class<?> stg = myClasss.getParameterTypes()[0];

            System.out.println(stg);

            stg.cast(new Stage()); //.........[1] Not Working

            //stg.cast(new Object()); //.........[2] Not Working
        }
        catch(Exception e)
        {
            System.err.println("ERROR : "+e);
        }
    }

节点类树.java

    public class NodeClassTree extends Application {

        @Override
        public void start(Stage primaryStage){
            BorderPane bdrpn = new BorderPane();
        Scene cin = new Scene(bdrpn);
primaryStage.setScene(cin);

        }

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

错误

Exception in thread "main" java.lang.ExceptionInInitializerError
    at javafx.stage.Window.<init>(Window.java:1191)
    at javafx.stage.Stage.<init>(Stage.java:239)
    at javafx.stage.Stage.<init>(Stage.java:227)
    at application.Controls.GetTree.main(GetTree.java:21)
Caused by: java.lang.IllegalStateException: This operation is permitted on the event thread only; currentThread = main
    at com.sun.glass.ui.Application.checkEventThread(Application.java:443)
    at com.sun.glass.ui.Screen.setEventHandler(Screen.java:285)
    at com.sun.javafx.tk.quantum.QuantumToolkit.setScreenConfigurationListener(QuantumToolkit.java:667)
    at javafx.stage.Screen.<clinit>(Screen.java:79)
    ... 4 more

我得到类的名称,getCanonicalName()但我想转换geterameterTypes()[0]成舞台类之后我想得到Scene对象

标签: javajavafx

解决方案


正如异常所说,您正在非 UI 线程上进行 UI 更新。你应该使用Platform.runLater()


推荐阅读