【问题标题】:javafx how to make a panel public static [duplicate]javafx如何使面板公开静态[重复]
【发布时间】:2014-08-02 19:28:24
【问题描述】:

虽然我试图将面板设为公共静态,但它在编译时不会显示任何错误,但在运行时会出现如下错误:

Exception in Application start method
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:367)
    at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:305)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
Caused by: java.lang.RuntimeException: Exception in Application start method
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:894)
    at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:56)
    at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:158)
    at java.lang.Thread.run(Thread.java:745)
Caused by: javafx.fxml.LoadException: 
unknown path

    at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2617)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2595)
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2425)
    at schoolmanagement2.SchoolManagement2.start(SchoolManagement2.java:32)
    at com.sun.javafx.application.LauncherImpl$8.run(LauncherImpl.java:837)
    at com.sun.javafx.application.PlatformImpl$7.run(PlatformImpl.java:335)
    at com.sun.javafx.application.PlatformImpl$6$1.run(PlatformImpl.java:301)
    at com.sun.javafx.application.PlatformImpl$6$1.run(PlatformImpl.java:298)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl$6.run(PlatformImpl.java:298)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.access$300(WinApplication.java:39)
    at com.sun.glass.ui.win.WinApplication$4$1.run(WinApplication.java:112)
    ... 1 more

我想知道为什么这个错误会作为输出出现

请帮帮我...

是否可以将面板设为公共静态。

谢谢。

【问题讨论】:

  • 您能否发布一些描述您的错误的代码。很可能 FXML 路径不正确。
  • 表示可以将面板设为公共静态
  • 如果您能提供更多关于需求的信息,也许我们可以提供帮助。
  • 你到底为什么要这么做?
  • 我想获取前一个面板的大小并将该大小用于下一个面板。因为客户可以更改面板的大小。

标签: java javafx javafx-2 javafx-8


【解决方案1】:

这在 JFX 2 中是可能的。在 JFX 8 中,他们取消了此功能。

你做不到。

您可以创建另一个与此非静态窗格相同的静态变量。这个有可能。但是您需要在 start 或 initialize 方法期间手动将新的静态变量设置为等于您的非静态变量。 更好的是,在你的类中创建一个对该类实例的静态引用。因此:

private static Controller instance;

并在您的启动或初始化方法中再次对其进行初始化。然后你可以参考它:

Controller.instance.panel.doSomething();

【讨论】:

  • 我如何使用 jfx8
  • 就像我说的,这是不可能的。试试我提到的解决方法?
猜你喜欢
  • 1970-01-01
  • 2019-06-13
  • 2019-12-29
  • 1970-01-01
  • 2014-12-19
  • 1970-01-01
  • 2019-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多