如何启动java程序?

如何启动java程序?,java,user-interface,Java,User Interface,我已经编写了一个java程序,我正在通过“JavaMyProgram”这样的命令行运行它 现在我想有一个GUI,有一个开始,暂停和停止按钮。如何通过单击开始按钮来启动java程序。如何暂停和停止它?首先你需要写下你的“表格” 这对初学者来说是一个有用的资源 首先你需要写你的“表格” 这对初学者来说是一个有用的资源 我假设您的程序类似于: public class MyProgram { public void doSomething() { // ... does somethin

我已经编写了一个java程序,我正在通过“JavaMyProgram”这样的命令行运行它


现在我想有一个GUI,有一个开始,暂停和停止按钮。如何通过单击开始按钮来启动java程序。如何暂停和停止它?

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

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


首先你需要写你的“表格”

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


我假设您的程序类似于:

public class MyProgram {

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

  public static void main(String[] args) {
    new MyProgram().doSomething();
  }
}
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);
  }
}
我建议阅读,但启动程序的简单GUI可能是:

public class MyProgram {

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

  public static void main(String[] args) {
    new MyProgram().doSomething();
  }
}
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
来调用该函数,但您必须编写/实现该函数

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

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


将JAR文件转换成一个或多或少自包含的可部署应用程序是一个更大的难题,而且有很多选择。这可能是一个开始。

我认为您的程序类似于:

public class MyProgram {

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

  public static void main(String[] args) {
    new MyProgram().doSomething();
  }
}
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);
  }
}
我建议阅读,但启动程序的简单GUI可能是:

public class MyProgram {

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

  public static void main(String[] args) {
    new MyProgram().doSomething();
  }
}
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
来调用该函数,但您必须编写/实现该函数

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

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


将JAR文件转换成一个或多或少自包含的可部署应用程序是一个更大的难题,而且有很多选择。这可能是一个开始。

基本上你需要一个本机启动器,但我不明白你所说的“暂停”到底是什么意思。。。将进程发送到睡眠状态

我认为,在类Unix系统中,使用xdialog命令使用shell脚本应该很容易实现这一点

您需要实现一个状态机:

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

这样,您就可以在脚本中循环并对按钮做出反应。查看killdialog或xdialog的参考资料,了解有关实现的更多详细信息。

基本上,您需要一个本机启动器,但我无法理解“暂停”的确切含义。。。将进程发送到睡眠状态

我认为,在类Unix系统中,使用xdialog命令使用shell脚本应该很容易实现这一点

您需要实现一个状态机:

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

这样,您就可以在脚本中循环并对按钮做出反应。查看killdialog或xdialog的参考,了解有关实现的更多详细信息。

不需要本机启动器。一个可执行的.jar工作得很好,不会人为地限制平台兼容性。但是它没有按钮,只是启动应用程序。。。他需要一些图形化的东西来启动他的应用程序(不是在它已经启动之后),对吗?本机启动器是不必要的。一个可执行的.jar工作得很好,不会人为地限制平台兼容性。但是它没有按钮,只是启动应用程序。。。他需要一些图形化的东西来启动他的应用程序,不是吗?