如何在按钮单击事件上获取任何项目的输出

时间:2016-10-17 10:00:07

标签: java swing

我正在使用NetBeans中的Jframe Form。其实我的问题是......... 我有一个List,按钮,Textbox和一个TextArea。在列表中,有许多项目(如Update,Sum)。 当我从列表中选择一个项目时,此列表的输入将显示在文本框中(如Update.jar,Sum.jar)。当我执行jar文件时,jar文件的输出应该显示在TextArea中。我怎样才能做到这一点 。任何人请帮助我。 提前致谢。

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

 try{
 String a= String.valueOf(jList1.getSelectedValue());

jTextArea1.setText(String.valueOf(Runtime.getRuntime().exec("java -jar "+ a+".jar")));

        } catch (Exception e) {
            System.out.println(e);
    }                                        
}

Sum.jar代码

 package sum;

 public class Sum {

 public static void main(String[] args) {

 int a=10,b=90;

 int s=a+b;

 System.out.println("Sum of two numbers:"+s);    

 }
}

3 个答案:

答案 0 :(得分:2)

我认为这就是你想要做的。此方法运行jar文件并返回其输出。

public String getOutputOf(String jarfile) throws IOException{
    ProcessBuilder builder = new ProcessBuilder ("java", "-jar",  jarfile); 
    builder.redirectErrorStream(true); 
    Process process = builder.start();             
    BufferedReader reader = new BufferedReader (new InputStreamReader(process.getInputStream())); 
    StringBuilder sb = new StringBuilder();
    String line = "";
    while ((line = reader.readLine()) != null) {
        sb.append(line + "\n");
    }
    return sb.toString();
}

答案 1 :(得分:1)

我会尽力回答你。

所以你想要执行两个jar文件," Sum.jar"和" Update.jar",并获取他们的输出并放入JTextArea?

嗯,您的解决方案有两个部分。

首先,您可以使用Desktop API单击按钮来启动jar文件。

例如,

Desktop.getDesktop().open(new File(yourfilename));

这是按钮代码中的启动文件。

" Sum.jar"和" Update.jar",你可以这样做,以便在行动时,他们将计算你想要他们计算的东西,并在文本文件中输出输出。

例如:

FileWriter fileWriter;
        try {
            fileWriter = new FileWriter("Output.txt");
            BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
            bufferedWriter.write(yourOutput);
            bufferedWriter.close();

        } catch (IOException ex) {
        }

然后,您可以让JTextArea扫描文本文件并将其输出到JTextArea。

例如:

        try {
String content = new Scanner(new File("Output.txt")).useDelimiter("\\Z").next();
jTextArea.setText(content);
        } catch (FileNotFoundException ex) 
        }

我希望我帮忙!

答案 2 :(得分:0)

 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){                                    
 try{
  String a= String.valueOf(jList1.getSelectedValue());
   ProcessBuilder builder = new ProcessBuilder ("java", "-jar",  a+".jar"); 
   builder.redirectErrorStream(true); 
   Process process = builder.start();         
   BufferedReader reader = new BufferedReader (new InputStreamReader(process.getInputStream())); 
    StringBuilder sb = new StringBuilder();
    String line = "";
    while ((line = reader.readLine()) != null)
    {
      sb.append(line + "\n");
    }
    jTextArea1.setText(sb.toString());
    }
   catch (Exception e) {
      System.out.println(e);
   }                                        
  }