【问题标题】:Not able to run two Java FX Instance from Java main application? [duplicate]无法从 Java 主应用程序运行两个 Java FX 实例? [复制]
【发布时间】:2019-04-16 19:50:14
【问题描述】:

我是 Java FX 应用程序的初学者。我创建了一个简单的项目,我想在其中使用 Java 主应用程序运行两个 Java FX 实例。

public class InfoMain {
public static void main(String args[]) throws Exception {
    Application.launch(CxiC.class, args);
    Application.launch(BiC.class, args);}

BiC 类是示例应用程序,而我将 CxiC 类的文本更改如下:

public class CxiC extends Application{
 @Override
public void start(Stage primaryStage) {
    Button btn = new Button();
    btn.setText("Say 'Hello budapest'");
    btn.setOnAction(new EventHandler<ActionEvent>() {

        @Override
        public void handle(ActionEvent event) {
            System.out.println("Hello budapest!");
        }
    });

    StackPane root = new StackPane();
    root.getChildren().add(btn);

    Scene scene = new Scene(root, 300, 250);

    primaryStage.setTitle("Hello World!");
    primaryStage.setScene(scene);
    primaryStage.show();
}}

当我执行应用程序时,BiC 类的消息中会出现以下屏幕。但我希望两个屏幕同时出现。有什么建议吗?。

基于 cmets,我修改了我的代码,但仍然显示 Hello World 消息。即使我已经从我的 Java 主方法类中删除了这两个实例,消息也是一样的。 Java 应用程序似乎不接受 JavaFX 参数。 提前致谢。

【问题讨论】:

  • 如何在一个线程中创建每个实例? (每个线程一个)
  • Application.launch() 阻塞,直到 javafx 工具包关闭。这就是为什么您没有立即看到第二个launch 调用的结果的原因。请注意,第二次launch 调用的结果将是一个例外,请参阅重复链接。
  • 所有链接的答案都是有效的,如果这仍然不适合您 Yatish,请创建一个新问题,其中包含您的新代码不起作用,否则,您将无能为力无法帮助调试您看不到的代码。

标签: java javafx


【解决方案1】:

调用 Application.launch() 两次应该会导致异常。

来自Application.launch() API 文档:

启动一个独立的应用程序。此方法通常从 main 方法 () 调用。它不能被多次调用,否则会抛出异常。 在应用程序退出之前,启动方法不会返回,无论是通过调用 Platform.exit 还是所有应用程序窗口都已关闭。

您需要创建一个额外的舞台并显示它。 这是显示另一个阶段的示例: How to open two Javafx windows?

【讨论】:

  • 这两种方法都不适合我。 @B.托马斯。即使我评论了两种应用程序调用方法,它也会始终显示 Hello Message 屏幕。
猜你喜欢
  • 1970-01-01
  • 2014-02-14
  • 2013-02-15
  • 1970-01-01
  • 1970-01-01
  • 2015-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多