【问题标题】:Integrating batch script into Java GUI?将批处理脚本集成到 Java GUI 中?
【发布时间】:2014-07-28 01:54:01
【问题描述】:

这个问题也是我问的:How to integrate batch script multiple selections into JAVA GUI?

由于我的问题没有得到合适的答案,这就是为什么我决定在 stackoverflow 中以更简短和甜蜜的方式再次提问。免责声明:我在那个网站上编辑了这个问题。这就是为什么我找不到适合我的问题的答案。

我有这个需要集成到 java 编码中的批处理脚本。但这是我第一次进行集成,所以我不熟悉应该如何完成。

如果有人能在那个网站上回答我的问题,那就太好了。但是如果你不是,也可以给我提供一个将多选批处理脚本集成到java中的例子。

【问题讨论】:

  • 关于编程技巧,也不(不)关于“为我找到完美的解决方案”
  • 你为什么不使用 java 控制台输入/输出?这比摆弄批处理更不容易出错,您显然想要创建一个程序而不是一个小脚本。将这两件事混合在一起总是会产生大问题......初学者的常见错误
  • @mKorbel 我不是在寻找完美的解决方案。我刚开始学习批处理脚本和 java 1-2 个月前。这就是为什么我需要一些帮助来实施集成。
  • 试图同时学习两件事也很容易出错。专注于 Java OR 批处理。
  • @specializt 嗨,我确实想过使用 java i/o,但后来我编写了一个批处理脚本,其中包含很多与某些软件相关的条件语句和命令。这就是我决定使用批处理脚本的原因,但我确实没有考虑集成部分。因为我缺乏这方面的知识。

标签: java batch-file integration


【解决方案1】:

阅读您的原始帖子,我可以得出结论,您的解决方案将非常简单:

private static String cmdLine = "";
private static final String scriptFile = "MYSCRIPT.sh"

   public GUI() {
        setTitle("FAMILY");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);



    JCheckBox chckbxMyFatherIs = new JCheckBox("My Father is Joe");
    chckbxMyFatherIs.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
           if(!cmdLine.contains("JOE"))
             cmdLine += " JOE ";
        }
    });
    chckbxMyFatherIs.setBounds(45, 48, 137, 23);
    contentPane.add(chckbxMyFatherIs);

    JCheckBox chckbxNewCheckBox = new JCheckBox("My Mother is Audrey");
    chckbxNewCheckBox.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
           if(!cmdLine.contains("AUDREY"))
             cmdLine += " AUDREY ";
        }
    });
    chckbxNewCheckBox.setBounds(196, 48, 198, 23);
    contentPane.add(chckbxNewCheckBox);

    JCheckBox chckbxNewCheckBox_1 = new JCheckBox("My Bother is Jerry");
    chckbxNewCheckBox_1.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
           if(!cmdLine.contains("JERRY"))
             cmdLine += " JERRY ";
        }
    });
    chckbxNewCheckBox_1.setBounds(45, 97, 137, 23);
    contentPane.add(chckbxNewCheckBox_1);

    JCheckBox chckbxNewCheckBox_2 = new JCheckBox("My eldest Sister is June ");
    chckbxNewCheckBox_2.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
           if(!cmdLine.contains("JUNE"))
             cmdLine += " JUNE ";
        }
    });
    chckbxNewCheckBox_2.setBounds(196, 97, 198, 23);
    contentPane.add(chckbxNewCheckBox_2);

    JCheckBox chckbxNewCheckBox_3 = new JCheckBox("My youngest sister is Awy");
    chckbxNewCheckBox_3.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
           if(!cmdLine.contains("AWY"))
             cmdLine += " AWY ";
       }
    });
    chckbxNewCheckBox_3.setBounds(196, 149, 198, 23);
    contentPane.add(chckbxNewCheckBox_3);

    JCheckBox chckbxAll = new JCheckBox("All");
    chckbxAll.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {               
             cmdLine = "JOE AUDREY JERRY JUNE AWY";
        }
    });
    chckbxAll.setBounds(45, 149, 97, 23);
    contentPane.add(chckbxAll);
}

您还需要为您的 OK 按钮添加一个事件侦听器,您可以在其中调用:

Runtime.getRuntime().exec(scriptFile + cmdLine);

请注意:这只会将参数添加到您的列表中,还需要处理删除(通过取消勾选框)...我想您现在知道如何操作了。 考虑使用list 而不是单个字符串...这样不那么混乱,并且允许动态查找/删除/添加参数。

【讨论】:

  • 但我无法运行它。这可以从拇指驱动器运行吗?还是必须在桌面上运行?它说类似Caused by java.io.IOException blah blah blah。
  • "blah blah blah" 正是您的错误解释。学习阅读错误信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-30
  • 1970-01-01
  • 2020-04-27
相关资源
最近更新 更多