如何启动java程序?

时间:2009-10-02 08:28:24

标签: java user-interface

我编写了一个java程序,我通过命令行运行它,如“java MyProgram”

现在我想要一个具有开始,暂停和停止按钮的GUI。如何通过单击开始按钮启动该Java程序。如何暂停它以及如何阻止它?

3 个答案:

答案 0 :(得分:4)

我认为你的程序是这样的:

public class MyProgram {

  public void doSomething() {
    // ... does something ...
  }

  public static void main(String[] args) {
    new MyProgram().doSomething();
  }
}

我建议阅读Swing Tutorial,但启动程序的简单GUI可能类似于:

public class MyProgramLauncher {
  public static void main(String[] args) {
    final MyProgram myProgram = new MyProgram();

    JFrame frame = new JFrame("My Program");
    JComponent cp = frame.getContentPane();
    cp.add(new JButton(new AbstractAction("Start") {
      public void actionPerformed(ActionEvent e) {
        myProgram.doSomething();
      }
    }));
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
  }
}

如果您的班级有pause()函数,您可以添加类似的JButton来调用该函数,但您必须编写/实现该函数。

但是,您必须使用java MyProgramLauncher启动它,这不是很令人兴奋。不过,这将为您提供一个基本的GUI,您可以在其中尝试启动,暂停等等。

要将程序转换为可以双击的程序,您需要创建JAR file。这基本上是一个特殊的ZIP文件,其中包含应用程序中的所有类,以及描述这些类的manifest.xml文件和(对于可启动的JAR文件)标识其main()方法应该是的“主类”在启动JAR文件时调用。

将JAR文件转换为或多或少自包含的可部署应用程序是一个更大的痛苦,并且有很多选项。 Deployment Tutorial可能是一个开始的地方。

答案 1 :(得分:1)

基本上你需要一个原生的发射器,但我无法通过“暂停”弄清楚你的意思是什么......将进程发送到睡眠状态?

我认为在类似Unix的系统中使用xdialog命令在shellcript中实现它应该非常容易。

您需要实现状态机:

  • 国家:“停止”
    • 开始:执行java YourProgram并将PID存储在变量中。将状态更改为“已启动”
    • 暂停:不做任何事情/禁用
    • 停止:不做任何事情/禁用
  • 状态:“已开始”
    • 开始:什么都不做/已禁用
    • 暂停:将STOP信号(如ctr + z)发送到进程。将状态更改为“已暂停”
    • 停止:将INT信号(如ctr + c)发送到进程。将状态更改为“已停止”
  • 州“暂停”
    • 开始:什么都不做/已禁用
    • 暂停:将CONT信号(如执行fg)发送到进程。更改开始“已启动”
    • 停止:将INT信号(如ctr + c)发送到进程。将状态更改为“已停止”

有了这个,你可以循环脚本并对按钮作出反应。查看 kill 对话框或xdialog的参考,了解有关实施的更多详细信息。

答案 2 :(得分:0)

首先,你需要写下你的“表格”......

这对初学者来说是一个有用的资源。

Basics