我尝试了太多方法,但未能成功
我将运行系统命令,并将结果放入bufferedreader中并读取每一行,并将其放入向量中,并将其放在一行中,然后清除向量以重复使用它,但是它不起作用,我不知道为什么请帮忙
这是我的代码,但是崩溃了,我不知道为什么
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try {
DefaultTableModel model = (DefaultTableModel)jTable1.getModel();
Vector<Object> row = new Vector();
running_process ob = new running_process();
BufferedReader stdInput ;
String s;
stdInput= ob.all_running_ps();
while ((s = stdInput.readLine()) != null) {
row.add(s);
model.addRow(row);
row.clear();
}
}
}
最佳答案
并将其放在向量中并排成一行,然后清除向量以重复使用它,但是它不起作用我不知道为什么
您无法清除Vector。您需要为要添加到表中的每一行数据创建一个新的Vector:
while ((s = stdInput.readLine()) != null) {
Vector<Object> row = new Vector<Object>();
row.add(s);
model.addRow(row);
}
running_process ob =新的running_process();
另外,我认为您不应该从侦听器运行外部进程。此过程可能会阻止并阻止EDT对事件做出响应。您可能应该将代码移至
SwingWorker
,然后在数据可用时将其“发布”到表中。阅读Swing教程中关于Concurrency的部分,以获取有关
EDT
和SwingWorker
示例的工作代码的更多信息。