Java 如何在jtable中添加系统命令结果?
我尝试了太多的方法,但都失败了 我将运行一个系统命令,将结果放入一个bufferedreader,读取每一行,将其放入一个向量,并将其放入一行,清除向量以重用它,但它不起作用,我不知道为什么请帮助 这是我的代码,但它崩溃了,我不知道为什么Java 如何在jtable中添加系统命令结果?,java,swing,jtable,Java,Swing,Jtable,我尝试了太多的方法,但都失败了 我将运行一个系统命令,将结果放入一个bufferedreader,读取每一行,将其放入一个向量,并将其放入一行,清除向量以重用它,但它不起作用,我不知道为什么请帮助 这是我的代码,但它崩溃了,我不知道为什么 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { try {
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();
}
}
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){
试试{
DefaultTableModel=(DefaultTableModel)jTable1.getModel();
向量行=新向量();
正在运行的_进程ob=新的正在运行的_进程();
缓冲读取器标准输入;
字符串s;
stdInput=ob.all_running_ps();
而((s=stdInput.readLine())!=null){
行。添加(s);
model.addRow(row);
row.clear();
}
}
}
然后把它放在一个向量中,然后把它排成一行,清除向量以重用它,但它不起作用,我不知道为什么
你不能清除向量。您需要为要添加到表中的每一行数据创建一个新向量:
while ((s = stdInput.readLine()) != null) {
Vector<Object> row = new Vector<Object>();
row.add(s);
model.addRow(row);
}
while((s=stdInput.readLine())!=null){
向量行=新向量();
行。添加(s);
model.addRow(row);
}
正在运行的_进程ob=新的正在运行的_进程()
另外,我认为您不应该从侦听器运行外部进程。此过程可能会阻止EDT响应事件。您可能应该将代码移动到SwingWorker
,并在数据可用时将其“发布”到表中
有关EDT
和SwingWorker
示例的工作代码的更多信息,请阅读上Swing教程的部分
然后把它放在一个向量中,然后把它排成一行,清除向量以重用它,但它不起作用,我不知道为什么
你不能清除向量。您需要为要添加到表中的每一行数据创建一个新向量:
while ((s = stdInput.readLine()) != null) {
Vector<Object> row = new Vector<Object>();
row.add(s);
model.addRow(row);
}
while((s=stdInput.readLine())!=null){
向量行=新向量();
行。添加(s);
model.addRow(row);
}
正在运行的_进程ob=新的正在运行的_进程()
另外,我认为您不应该从侦听器运行外部进程。此过程可能会阻止EDT响应事件。您可能应该将代码移动到SwingWorker
,并在数据可用时将其“发布”到表中
阅读Swing教程中关于的部分,了解有关
EDT
和SwingWorker
示例的工作代码的更多信息。非常感谢当我每行创建一个新向量时它工作:)非常感谢当我每行创建一个新向量时它工作:)