在普通Java应用程序中创建JavaFX主阶段
我有一个启动器和一个JavaFX类。启动器创建一个名为JavaFXApplication1的类。JavaFX应用程序包含整个JavaFX代码(在本例中只是一个小示例),应该用一个主阶段设置一个窗口 启动器有一个静态的主入口点——但是我读到JavaFX并没有真正使用这个入口点。这解释了我的控制台输出(请参阅本文末尾) 我不知道这是否可行(Launcher创建了一个JavaFX窗口-入口点在presentation类本身中是而不是)。我不想使用预加载程序(我认为预加载程序只是用于启动期间的重载),因为启动器将整个程序表示为一个对象(表示、业务和持久性-一个三层程序)。入口点应该在presentation类之外(在本例中为launcher类) 下面的示例确实有效。但对我来说,这就像一个“黑魔法” 这是我的密码 发射器:在普通Java应用程序中创建JavaFX主阶段,java,javafx-2,javafx,stage,Java,Javafx 2,Javafx,Stage,我有一个启动器和一个JavaFX类。启动器创建一个名为JavaFXApplication1的类。JavaFX应用程序包含整个JavaFX代码(在本例中只是一个小示例),应该用一个主阶段设置一个窗口 启动器有一个静态的主入口点——但是我读到JavaFX并没有真正使用这个入口点。这解释了我的控制台输出(请参阅本文末尾) 我不知道这是否可行(Launcher创建了一个JavaFX窗口-入口点在presentation类本身中是而不是)。我不想使用预加载程序(我认为预加载程序只是用于启动期间的重载),因
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()
有没有办法创建这样的应用程序?谢谢这个问题的答案是创建一个java项目,而不是JavaFX项目。在此之后,您可以添加一个JavaFX主类并编写一个方法(call launch()) 也许您必须从/jdk_*/jre/lib目录添加编译时库deploy.jar、javaws.jar、jfxrt.jar和plugin.jar 这可能是你要找的吗 代码相当长,因此最好参考帖子,但用法很简单。请注意,init和stop方法不使用启动器线程,因此请小心使用 其目的是在类的主方法上运行一个虚拟javafx应用程序,以便进行快速测试/实验 要使用它,只需使用lambda在main方法中添加以下内容,或者也可以使用匿名内部类样式
// using the start method of Application class
Utility.launchApp((app, stage) -> {
// javafx code
}, arArgs);
Main方法并没有真正使用,这是JFX 8.0的一个特性:或者感谢您提供的提示:第二个答案是:2)创建一个独立的主类,该类不从javafx.application.application扩展,并将该调用放入启动器(仅当您确实无法以其他方式完成所需的操作时)。他是什么意思?这不是我的案子吗?遗憾的是,我无法找到与本文相关的第二个链接@AlexanderKirov,也无法找到你暗示我看到了问题所在。但我正在寻找一种解决方法(如果可能的话),我试图创建一个简单的Java应用程序(不是JavaFX应用程序,一切都按照您的意愿运行:main()caller()start()(JDK8 b76,NetBeans 7.3beta2)嗯……然后我犯了一个错误。我创建了一个Java项目,添加了一个Java类(带有一个主方法)和JavaFX类(扩展了应用程序)Netbeans找不到javafx包(在Kubuntu下,Oracle JDK7和Windows 7以及Oracle JDK 7出现了问题).JavaFX已在plattform概要文件中启用。请对此问题发表评论。如果您使用普通的JavaApplication,将使用标准打包程序,并将调用main方法。如果您创建JavaFX应用程序,将使用javafxpackager,并将忽略main方法,将通过start(..)调用类扩展应用程序对问题中的代码进行评论:您应该使用“Application.launch(JavaFXApplication.class,args)”而不是创建新实例及其方法调用,因为创建新实例将被忽略。最后一点是,如果希望应用程序与小程序或web start一起分发,则不应使用主方法。请不要提供仅链接的答案。至少包括建议解决方案的摘要,以防ide链接停止工作。