我正在使用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);
}
}
答案 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);
}
}