簡體   English   中英

JavaFX使用Platform.runLater和SwingUtilities.involkeLater

[英]JavaFX using Platform.runLater and SwingUtilities.involkeLater

有人能夠舉例說明如何將Platform.runLater和SwingUtilities.invokeLater與javaFX一起使用。 我嘗試同時使用這兩種方法,並且收到以下消息:

Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: Error: class Window$2 is not a subclass of javafx.application.Application at javafx.application.Application.launch(Unknown Source) at Window$2.run(Window.java:50) at com.sun.javafx.application.PlatformImpl.lambda$null$164(Unknown Source) at com.sun.javafx.application.PlatformImpl$$Lambda$47/389777815.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.application.PlatformImpl.lambda$runLater$165(Unknown Source) at com.sun.javafx.application.PlatformImpl$$Lambda$46/1775282465.run(Unknown Source) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source) at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.lambda$null$141(Unknown Source) at com.sun.glass.ui.win.WinApplication$$Lambda$37/1109371569.run(Unknown Source) at java.lang.Thread.run(Unknown Source)

該類文件稱為Window,但我不確定為什么要說Window $ 2,所以我認為$ 2是內存中的錯誤打印出來的垃圾。 我正在使用的代碼如下。 arguments是靜態String [],因為args不是靜態的。 另外,當我使用launch(Window.class,arguments); 它引發錯誤,然后迅速消失,但是當我不包括Window.class時,它將根本無法工作。 它不應該假設它正在從同一類中調用launch方法嗎? 另外,launch(args)在這些方法之外也可以正常工作。

public static void main (String[] args) {
    arguments = new String[args.length];
    System.arraycopy(args, 0, arguments, 0, args.length);

    Platform.runLater(new Runnable() {
        @Override
        public void run() {
            launch(arguments);
        }
    }); 

    /*
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            launch(Window.class, arguments);
        }
    }); */
    //launch(args);
}

SwingUtilities.involkeLater通常已過時,因為JavaFX打算替換Swing。 不需要Platform.runLater,因為可以自動調用啟動。

可以按以下方式獲取參數:

    @Override
    public void init() {
        Parameters params = getParameters();
        Map<String, String> named = params.getNamed();
        System.out.println(named);
    }

如果您沒有key = value參數,請從Parameters中檢查其他選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM