Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.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 如何将StringTokenizer与jTable一起使用_Java_Swing_Jtable_Stringtokenizer - Fatal编程技术网

Java 如何将StringTokenizer与jTable一起使用

Java 如何将StringTokenizer与jTable一起使用,java,swing,jtable,stringtokenizer,Java,Swing,Jtable,Stringtokenizer,我有一个jTable,我想在其中显示一个命令的结果,我使用了StringTokenizer类的一个对象来分离命令cmd的结果,并将其显示在表jTable1中,我的问题是当我使用system.out.println(st.nextToken())时,它工作正常,但当我使用数据[0][I]要在表格中显示结果,当我编译表格所有行中命令的最后一个结果时会显示该结果 这是我的代码: public Object[][] data; public String title[] = {"t1

我有一个jTable,我想在其中显示一个命令的结果,我使用了StringTokenizer类的一个对象来分离命令cmd的结果,并将其显示在表jTable1中,我的问题是当我使用system.out.println(st.nextToken())时,它工作正常,但当我使用数据[0][I]要在表格中显示结果,当我编译表格所有行中命令的最后一个结果时会显示该结果 这是我的代码:

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

             }
公共对象[][]数据;
公共字符串标题[]={“t1”、“t2”、“t3”、“t4”、“t5”};
私有void init_选项卡(){
数据=新对象[5][5];

对于(int i=0;i它显示命令的最后一个结果的原因是您这样编码了它。请查看程序的以下部分

      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++;
           }

出于所有实际目的,考虑使用
StringTokenizer
。它只是为了向后兼容,现在实现相同结果的首选方法是在
String
类中使用
split()
方法,如下所示:

String response = build.toString();  
String[] st = response.split(":");
for (int j = 0; j < st.length; j++) {
    data[i][j] = st[j];
}
String response=build.toString();
字符串[]st=response.split(“:”);
对于(int j=0;j
您可能还对使用Google Guava库中的拆分器类感兴趣,例如。 Iterabletokens=Splitter.on(“:”).split(); for(字符串标记:标记) { //做点什么 }
它是不可变的,并且有一个非常流畅的API。

1)为了更快地获得更好的帮助,请发布一篇文章。2)请对代码块使用一致的逻辑缩进。3)请学习类、方法和属性名称的通用名称并一致地使用它。一个具体的例子是
init\u tab()
应该是
initTab()
…与读取代码一样困难:请修复格式:-)谢谢驱逐者,jTable应该返回我录制的命令的结果,然后我使用StringTokenizer分离结果并将其放入jTable,但是当我使用此代码编译时,相同的行(cmd命令的最后一个结果)在jtable的所有行中重复感谢您的回复,但是我想用split方法分离字符串结果,那么第一列的每一行都应该有分离的结果。我如何才能用下一行递增,谢谢