为了账号安全,请及时绑定邮箱和手机立即绑定

在没有 GUI 的情况下从命令行运行 JavaFX 应用程序

在没有 GUI 的情况下从命令行运行 JavaFX 应用程序

繁华开满天机 2023-03-17 10:31:16
我有一个 JavaFX,用户可以在其中选择要处理的文件。现在我想自动化它,以便您可以从命令行运行应用程序并将这些文件作为参数传递。我试着这样做:java -jar CTester.jar -cl file.txtpublic static void main(String[] args){     if (Arrays.asList(args).contains("-cl"))     {         foo();     }    else     {         launch(args);     } }main 已执行且参数正确,但这仍会创建 GUI。从文档:JavaFX 应用程序的入口点是 Application 类。每当应用程序启动时,JavaFX 运行时按顺序执行以下操作:构造指定 Application 类的实例调用 init() 方法调用 start(javafx.stage.Stage) 方法等待应用程序完成,这在发生以下任一情况时发生:应用程序调用 Platform.exit()最后一个窗口已关闭且 Platform 上的 implicitExit 属性为真调用 stop() 方法因此,如果我不能使用该main方法,我该如何创建这种“替代”流程?我考虑过创建一个普通的 Java 应用程序作为包装器,但对于这样一个简单的任务来说,这似乎有点过分了。有没有更优雅的方式来做到这一点?
查看完整描述

1 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

在调用您的方法后简单地退出应用程序foo():


Platform.exit();

这是一个用于演示的快速示例应用程序:


import javafx.application.Application;

import javafx.application.Platform;

import javafx.geometry.Insets;

import javafx.geometry.Pos;

import javafx.scene.Scene;

import javafx.scene.control.Label;

import javafx.scene.layout.VBox;

import javafx.stage.Stage;


public class CLSample extends Application {


    public static void main(String[] args) {


        if (Arrays.asList(args).contains("-cl")) {

            commandLine();

            Platform.exit();

        } else {

            launch(args);

        }


    }


    public static void commandLine() {

        System.out.println("Running only command line version...");

    }


    @Override

    public void start(Stage primaryStage) {


        // Simple Interface

        VBox root = new VBox(10);

        root.setAlignment(Pos.CENTER);

        root.setPadding(new Insets(10));


        root.getChildren().add(new Label("GUI Loaded!"));


        // Show the stage

        primaryStage.setScene(new Scene(root));

        primaryStage.setTitle("CLSample Sample");

        primaryStage.show();


    }

}

如果您通过-cl,则只会commandLine()调用该方法。


查看完整回答
反对 回复 2023-03-17
  • 1 回答
  • 0 关注
  • 72 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号