Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在jtable中添加系统命令结果?_Java_Swing_Jtable - Fatal编程技术网

Java 如何在jtable中添加系统命令结果?

Java 如何在jtable中添加系统命令结果?,java,swing,jtable,Java,Swing,Jtable,我尝试了太多的方法,但都失败了 我将运行一个系统命令,将结果放入一个bufferedreader,读取每一行,将其放入一个向量,并将其放入一行,清除向量以重用它,但它不起作用,我不知道为什么请帮助 这是我的代码,但它崩溃了,我不知道为什么 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { try {

我尝试了太多的方法,但都失败了 我将运行一个系统命令,将结果放入一个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();
        }
    }
}
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
示例的工作代码的更多信息。

非常感谢当我每行创建一个新向量时它工作:)非常感谢当我每行创建一个新向量时它工作:)