[英]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.