2012-03-18 49 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