【问题标题】:Use command line args in a Java Swing program在 Java Swing 程序中使用命令行参数
【发布时间】:2011-07-01 07:46:43
【问题描述】:

如何在 Java Swing 程序中处理命令行参数?

编辑:我想做的是让用户提供一个文件路径作为参数。然后我将 jTextPane 的文本设置为该文件的内容。

【问题讨论】:

  • 请澄清 1) 从命令行启动 Swing... 2) 从 Swing 启动一些命令行进程
  • "..give 一个文件路径作为 arg。然后我将 jTextPane 的文本设置为该文件的内容。" 这听起来很棒 last千禧年,但为了这个千禧年,启动应用程序。使用Java Web Start & 声明对启动文件中的文件类型(例如 txt、html、rtf)感兴趣。然后当用户双击其中一个文件类型时,路径/名称将作为main(String[]) 的第二个参数提供(第一个参数是-open。参见JNLP API File services demo.
  • @Andrew Thompson:这个选项对于我编写这个程序的情况是不可行的。
  • @trashgod:这不是重复的。我的情况与那篇文章不同,因为那里没有提到访问 Swing 组件并为它们提供命令行参数。
  • @Matt R. Johnson:Re - JWS “那个选项不可行” 为什么不呢?请不要让我玩“20 个问题”。

标签: java swing command-line command-line-arguments


【解决方案1】:

唯一的方法是在运行Java类文件时通过main方法。

编译后在命令行中执行以下操作; java NameOfClassFile a b c d

例如,将它们打印为命令行参数数组:

public static void main(String[] args)
{
    for(String arg : args)
        System.out.println(arg);
}

我不知道如何将命令行参数传递给当前正在运行的 Java Swing 程序。不知道你能不能。

要在 JTextPane 上显示文件内容,您可以使用 args[0] 文件路径的命令行参数:

JTextPane pane = new JTextPane();
JFrame frame = new JFrame("Example");
frame.add(pane);
frame.setVisible(true);
File file = new File(args[0]);
pane.setPage(file.toURL().toString());
frame.pack();

如果您想要多个文件内容,只需使用java NameOfClassFile file1 file2 file3 然后可以使用args[0] args[1] args[2]获取文件路径,修改上面的代码放到一个JTextPane上。

【讨论】:

  • 这似乎不起作用。我想要做的是让用户提供一个文件路径作为 arg。然后我将 jTextPane 的文本设置为该文件的内容。
  • @Matt R. Johnson:如果这是你想要的,你应该在你的帖子中更清楚 - 继续编辑它以询问你真正想要什么。
  • @Shakedown:对不起。你是对的。我应该从一开始就这么说。
  • @Dan:很遗憾,我无法发布我的代码。 A) 它太多了,我不知道哪些部分会有所帮助 B) 这是一份工作,我认为他们不会感谢我公开代码。
【解决方案2】:

如前所述,从命令行参数到 Swing 没有直接的方法。您的 Swing 应用程序将从某处的 main 方法执行,因此您必须修改该方法以从提供的参数中获取文件,然后以某种方式将其传递给您的 Swing 组件。

另一方面,如果您正在制作 Swing 应用程序,您不妨忘记命令行,而是提供一种调用 JFileChooser 的方法,以允许您的用户以图形方式选择他们系统上的文件,然后继续将内容加载到您的JTextArea

另一种类似于提供命令行参数的方法是提供JTextField,允许用户输入文件的完整路径。

我建议您在JTextArea 上方添加一个"Load File" 按钮,该按钮将调用JFileChooser

祝你好运!

【讨论】:

  • 我同意。从可用性的角度来看,JFileChooser 是通往这里的道路。详情见这里:download.oracle.com/javase/tutorial/uiswing/components/…
  • 请解释评论,“如前所述,从命令行参数到 Swing 没有直接的方法。”通过 main 方法是执行此操作的好方法。参数可以通过类的构造函数参数轻松传递。
  • 我只是想说 Swing 库中与命令行参数无关。
  • 我实际上有一个 FileChooser 和一个完整的文件管理系统编程。但我想有命令行参数。最后,我将在相关文件类型中添加一个右键单击选项,以便可以在我的程序中打开它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多