2014-01-22 3 views
1

У меня есть программа, которая с помощью JSch запускает команду на сервере и получить следующие результаты изJava, String в JTable

rcpt 7554 Jan-21 01-03:43:27  ? /usr/bin/Program 
ncuser2 7202 Jan-21 01-04:22:08  ? /usr/bin/Program 
    lyn 6277 Dec-17 36-02:14:51  ? /usr/bin/Program 10.15.1.104:0.0 
    lyn 6268 Dec-17 36-02:15:17  ? /usr/bin/Program 10.15.1.104:0.0 

Эти результаты хранятся в одной строке.

Что мне нужно сделать, это преобразовать/вывести эти результаты в JTable.

То, что я не могу работать, как получить то, что в одной строке выше в несколько ячеек JTable в Swing, так это выглядит, как этот

User | PID | Launch | Runtime | TTYP | Program | 
    ----------------------------------------------- 
    rcpt | 7554| Jan-21 |01-03:43:27 | ? |/usr/bin/Program 
ncuser2| 7202| Jan-21 |01-04:22:08 | ? |/usr/bin/Program 
    lyn| 6277| Dec-17 |36-02:14:51 | ? |/usr/bin/Program 10.15.1.104:0.0 
    lyn| 6268| Dec-17 |36-02:15:17 | ? |/usr/bin/Program 10.15.1.104:0.0 

Основной вопрос, я имею это найти способ разбивая строку, я хочу сделать это в пространстве, глядя на это. Даже если бы я мог разбить его на переменные для каждого пространства, я мог бы это исправить, но на данный момент у меня нет подсказки!

+0

У вас есть ответ ? – Prateek

ответ

2

Вы можете достичь его, как показано ниже:

public static void main(String[] args) { 

     String dataStr = "rcpt 7554 Jan-21 01-03:43:27  ? /usr/bin/Program\n" 
       + "ncuser2 7202 Jan-21 01-04:22:08  ? /usr/bin/Program\n" 
       + "lyn 6277 Dec-17 36-02:14:51  ? /usr/bin/Program 10.15.1.104:0.0\n" 
       + "lyn 6268 Dec-17 36-02:15:17  ? /usr/bin/Program 10.15.1.104:0.0\n"; 

     String rows[] = dataStr.split("\n"); 


     Vector<Vector<String>> dataVector = new Vector<Vector<String>>(); 
     for (String row : rows) { 
      row = row.trim(); //UPDATE 
      Vector<String> data = new Vector<String>(); 
      data.addAll(Arrays.asList(row.split("\\s+"))); 
      dataVector.add(data); 
     } 

     Vector<String> header = new Vector<String>(2); 
     header.add("User"); 
     header.add("PID"); 
     header.add("Launch"); 
     header.add("Runtime"); 
     header.add("TTYP"); 
     header.add("Program"); 

     TableModel model = new DefaultTableModel(dataVector, header); 
     JTable table = new JTable(model); 

     JFrame frame = new JFrame("DemoFrame"); 
     frame.add(new JScrollPane(table)); 
     frame.setSize(300, 200); 
     frame.setVisible(true); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 

ВЫХОД

enter image description here

+0

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

+0

Не совсем уверен, что происходит, его близкие, но некоторые вещи выводя таблицу со всем, сдвинутым вправо на одну ячейку, так что пользователи находятся в поле PID и т. д. любые идеи? –

+0

R u получение вашей строки из потока в соответствующем формате – Prateek

0
  1. раскол ("\ п") для линий
  2. раскол ("\ s +") для клеток