2012-03-18 31 views
1

我有一個jTable,我想在其中顯示一個命令的結果,我用StringTokenizer類的一個對象來分隔命令cmd的結果並將其顯示在表中jTable1,我的問題是當我使用system.out.println(st.nextToken())它正常工作,但當我使用數據[0] [我]來顯示結果時,它顯示當我編譯的最後結果在表 本的所有行的命令是我的代碼:我如何使用StringTokenizer與我的jTable

public Object[][] data; 
     public String title[] = {"t1","t2","t3","t4","t5"}; 
     private void init_tab() { 

      data = new Object[5][5]; 
       for(int i=0;i<5;i++){ 
      try{ 
      String  cmd = "the command "       
      ..... //command cmd traitment 
      } 
I 
      String response = build.toString(); 
      StringTokenizer st = new StringTokenizer(response,":"); 
       while (st.hasMoreTokens()) { 

        //System.out.println(st.nextToken()) ; 


        data[i][0]= st.nextToken(); 


      } 
      }catch(Exception e){ 
     e.printStackTrace();} 

      jTable1= new JTable(data, title); 
      jScrollPane1.setViewportView(jTable1); 
        } 

      } 

有人可以幫助我,我知道在數據的問題[I] [0],但我怎麼能解決這個問題,並感謝

+2

1)爲了更好地提供幫助,請發佈[SSCCE](http://sscce.org/)。 2)請爲代碼塊使用一致的邏輯縮進。 3)請了解常用的[Java命名約定](http://java.sun.com/docs/books/jls/second_edition/html/names.doc.html#73307),瞭解類,方法和屬性名稱並一致使用。一個具體的例子是'init_tab()'應該是'initTab()' – 2012-03-18 12:24:19

+0

...與讀取代碼一樣困難:請修復格式:-) – kleopatra 2012-03-18 12:25:19

+0

謝謝驅逐者,jTable應該返回命令的結果I然後我使用StringTokenizer來分離結果並將其寫入jTable中,但是當我使用此代碼編譯時,同一行(cmd命令的最後一個結果)在jTable – hanem 2012-03-18 12:27:14

回答

1

對於所有的實際目的,使用StringTokenizer被認爲是deprecated。這是隻有在那裏向後兼容,與時下以達到相同的結果的首選方法是使用split()方法在String類,像這樣:

String response = build.toString(); 
String[] st = response.split(":"); 
for (int j = 0; j < st.length; j++) { 
    data[i][j] = st[j]; 
} 
2

它顯示命令的最後結果的原因是你已經這樣編碼了。請看看你,下面的程序

 String response = build.toString(); 
     StringTokenizer st = new StringTokenizer(response,":"); 
      while (st.hasMoreTokens()) { 
       //System.out.println(st.nextToken()) ; 
       data[i][0]= st.nextToken(); 
     } 

你迭代的,分隔的所有字符串標記的一部分「:」,並在同一位置數據將它添加[I] [0]。當您將它添加到數據(行)數組中的相同索引時,它將遍歷所有的標記,並且每次將替換之前添加的標記。這將發生,直到StringTokenizer有更多的令牌,並且在添加最後一個令牌後會從上面的循環中出來。請解決這個問題,如果你想在5個不同的列,以顯示5個標記如下,

  String response = build.toString(); 
     StringTokenizer st = new StringTokenizer(response,":"); 
     int j = 0; 
      while (st.hasMoreTokens()) { 
       //System.out.println(st.nextToken()) ; 
       data[i][j]= st.nextToken(); 
       j++; 
      } 
0

您還可能有興趣在使用從分離器類Google Guava圖書館,例如 Iterable < String> tokens = Splitter.on(「:」).split(); for(String token:令牌) { //做某事 } 它是不可變的,並有一個很好的流利的API。

+0

的所有行中重複,感謝您的回覆,但我想用split方法分割String結果,那麼第一列的每一行都應該有分離的結果,我怎樣才能增加下一行,謝謝 – hanem 2012-03-19 01:06:01