【发布时间】:2013-01-26 22:42:45
【问题描述】:
我有一个启动器和一个 JavaFX 类。启动器创建一个名为 JavaFXApplication1 的类。 JavaFXApplication 包含整个 JavaFX 代码(在本例中只是一个小示例),并且应该设置一个具有一个主要阶段的窗口。
启动器有静态主入口点——但我读到 JavaFX 并没有真正使用这个入口点。这解释了我的控制台输出(见帖子末尾)
我不知道这是否可能(启动器创建一个 JavaFX 窗口 - 入口点在表示类本身中是 not)。我不想使用预加载器(我认为预加载器只是用于启动期间的重载),因为启动器将整个程序表示为一个对象(演示、业务和持久性 - 一个 3 层程序)。入口点应该在演示类之外(在这个例子中是在启动器类中)
以下示例确实有效。但对我来说,这就像一块“黑魔法”
这是我的代码
启动器:
package javafxapplication1;
public class Launcher
{
public static void main(String[] args)
{
System.out.println("main()");
// Do some stuff and then create the UI class
JavaFXApplication1 client = new JavaFXApplication1();
client.caller(args);
}
}
JavaFXApplication1:
package javafxapplication1;
import javafx.application.Application;
import javafx.stage.Stage;
public class JavaFXApplication1 extends Application
{
@Override
public void start(Stage primaryStage)
{
System.out.println("start()");
primaryStage.setTitle("I am a JavaFX app");
primaryStage.show();
}
public void caller(String[] args)
{
System.out.println("caller()");
launch(args);
}
/* We call the main function from the client
public static void main(String[] args)
{
launch(args);
}*/
}
程序的输出是:
start()
有没有办法创建这样的应用程序?谢谢
【问题讨论】:
-
main 方法并没有真正使用,这是 JFX 8.0 的一个特性:javafx-jira.kenai.com/browse/RT-27808 OR jbs.oracle.com/bugs/browse/JDK-8001533
-
感谢您的提示:第二个答案是:2)创建一个不从 javafx.application.Application 扩展的单独 Main 类并将该调用放入启动器(仅当您真的不能做你需要做的其他方式)。他是什么意思?这不是我的情况吗?可悲的是,我无法访问您的第二个链接(对我而言)
-
@AlexanderKirov 与本文相关mail.openjdk.java.net/pipermail/core-libs-dev/2012-November/… 和您的提示我看到了问题。但我正在寻找一种解决方法(如果可能的话)
-
我尝试创建一个简单的 Java 应用程序(不是 JavaFX 应用程序,一切都按您的意愿工作:main() caller() start()。(JDK8 b76,NetBeans 7.3beta2)
-
嗯..那我搞错了。我创建了一个 java 项目,将一个 java 类(带有 main 方法)和 javafx 类(扩展应用程序)添加到项目中。 Netbeans 找不到 javafx 包(在 Kubuntu 下使用 Oracle JDK7 和 Windows 7 以及 Oracle JDK 7 时出现问题)。平台配置文件中启用了 JavaFX。
标签: java javafx-2 javafx stage