2016-04-14 54 views
1

我在那里我得到数据的代码,当我输入值说itr.get(0),str.get(0)等等...但我想创建一个for循环,但我不能使用它,因为它里面model.addRow如何调用循环表格数据?

同时,各一个大小不同array list object(itr,str,dub)

如何通过for循环输入数据,因此我不必手动调用它。

public Data1() 
{ 
    super(); 
    setDefaultCloseOperation(EXIT_ON_CLOSE); 

    JTable table = new JTable(new DefaultTableModel(new Object[]{"Integers", "RealNumbers","OtherTokens"},5)); 
    DefaultTableModel model = (DefaultTableModel) table.getModel(); 

     model.addRow(new Object[]{itr.get(0),dub.get(0) ,str.get(0) }); 
     model.addRow(new Object[]{itr.get(1),dub.get(1) ,str.get(1) }); 
     model.addRow(new Object[]{itr.get(2),dub.get(2) ,str.get(2) }); 
     model.addRow(new Object[]{itr.get(3), "" ,str.get(3) }); 
     model.addRow(new Object[]{itr.get(4), "" ,str.get(4) }); 
     model.addRow(new Object[]{"", "" ,str.get(5) }); 

    table.setPreferredScrollableViewportSize(new Dimension(500,80)); 
    JScrollPane pane = new JScrollPane(table); 
    getContentPane().add(pane,BorderLayout.CENTER); 

} 
+0

您可以在制作JTable之前获取数据。你可以使用TableModel(一种更好的方法),并按照添加行的[Example Here](http://stackoverflow.com/questions/3549206/how-to-add-row-in-jtable)。你太锁定在一个单一的解决方案,并正在为[XY问题]痛苦(http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) – KevinO

+0

@kevin我用它,但我被困在一个类似的方式 – Box

+0

@kevin \t \t DefaultTableModel model =(DefaultTableModel)table.getModel(); model.addRow(new Object [] {itr.get(1),dub.get(1),str.get(1)});}};}};}} – Box

回答

1

原始问题询问有关将表添加到循环中的问题。然而,真正的问题不是循环本身,而是事实上有不同数量的不同类型的元素。这个答案需要聊天中提供的一些数据,并将其放入数组中。它可以从文件中读出。通过在数组中放置一个空字符串,它解决了在没有数据时给定行的内容的问题。

该方法是使用TableModel而不是尝试添加一个镜头。但是,如果需要,可以构造必要的数组,然后将其传递给构造函数。然而,长期来看,TableModel是一个更好的方法,恕我直言。

public static void main(String[] args) 
{ 
    // these three arrays represent the test data otherwise read 
    // from a file 
    int[] ia = { 1493, -832722, 0, 1, 162 }; 
    double[] da = { 0.4, -6.382, 9.0E-21 }; 
    String[] sa = { "The", "fox", "jumped", "over", "the", "dog!"}; 


    Object[] columnNames = { "Int", "Real", "Tokens" }; 


    DefaultTableModel dm = new DefaultTableModel(columnNames, 0); 
    JTable tbl = new JTable(dm); 

    // while reading for a file, would know the max length in 
    // a different way 
    int loopCtr = Math.max(ia.length, da.length); 
    loopCtr = Math.max(loopCtr, sa.length); 

    // loop for the longest entry; for each entry decide if there 
    // is a value 
    for (int i = 0; i < loopCtr; ++i) { 
     Integer iv = (i < ia.length ? ia[i] : null); 
     Double dv = (i < da.length ? da[i] : null); 
     String sv = (i < sa.length ? sa[i] : ""); 

     //add the row; if no value for a given entry, use an empty 
     // String 
     dm.addRow(new Object[]{(iv != null ? iv : ""), 
       (dv != null ? dv : ""), 
       sv}); 
    } 

    //just output for the moment 
    int cols = dm.getColumnCount(); 
    int rows = dm.getRowCount(); 
    StringBuilder sb = new StringBuilder(); 
    for (int row = 0; row < rows; ++row) { 
     sb.setLength(0); 
     for (int col = 0; col < cols; ++col) { 
      sb.append(dm.getValueAt(row, col)); 
      sb.append("\t");     
     } 

     System.out.println(sb.toString()); 
    } 
} 

输出根据需要演示带空格的表格。

1493  0.4  The  
-832722  -6.382 fox  
0   9.0E-21 jumped   
1      over  
162     the  
         dog!