2016-04-29 2 views
0

Я пробовал слишком много способов, но я не смог это сделать Я запустил системную команду, и я возьму результат в буферизаторе и прочитаю каждую строку, поместив ее в вектор и поместив в строку и очистив вектор до использовать его, но он не работает, я не знаю, почему, пожалуйста, помогитеКак добавить результат командной строки в jtable?

это мой код, но он разбился, и я не знаю, почему

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(); 
     } 
    } 
} 

ответ

2

и положить его в вектор и поместите его в ряд и очистите вектор, чтобы его повторно использовать, но он не работает. Я не знаю, почему

Вы не можете очистить вектор. Вам нужно создать новый вектор для каждой строки данных, которые вы хотите добавить в таблицу:

while ((s = stdInput.readLine()) != null) { 
    Vector<Object> row = new Vector<Object>(); 
    row.add(s); 
    model.addRow(row); 
} 

running_process О.Б. = новый running_process();

Кроме того, я не думаю, что вы должны запускать внешний процесс у слушателя. Этот процесс может блокировать и предотвращать ответ EDT на события. Вероятно, вы должны переместить код в SwingWorker и «опубликовать» данные в таблице по мере его появления.

Прочтите раздел из руководства Swing по телефону Concurrency для получения дополнительной информации о EDT и рабочем коде для примера SwingWorker.

+0

благодарит много, что он работает, когда я создаю новый вектор в каждой строке :) –

Смежные вопросы