2013-10-04 94 views
-1

我想用循環將行添加到我的表中。我的代碼如下:使用循環將行添加到JTable

import javax.swing.DefaultListModel; 
import javax.swing.JFrame; 
import javax.swing.JTable; 
import javax.swing.table.DefaultTableModel; 

public class Test { 

    public void testCase(){ 
     DefaultTableModel listTableModel; 
     listTableModel = new DefaultTableModel(); 
     for(int i = 1; i < 25 ; i++){ 
      String rowString = "Quiz #" + i; 
      listTableModel.addRow(new Object[]{rowString, "ICON", "ICON"}); 
     } 

     JTable listTable; 
     listTable = new JTable(listTableModel); 
     listTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 
     listTable.setCellEditor(null); 
     listTable.setBounds(37, 143, 397, 183); 
     //listTable.getColumnModel().getColumn(0).setPreferredWidth(300); 
     JFrame frame = new JFrame(); 
     frame.add(listTable); 
     frame.setVisible(true); 
     frame.pack(); 
    } 

/** 
* @param args 
*/ 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     Test tester = new Test(); 
     tester.testCase(); 

    } 

    } 

使用硬編碼表,該方法返回一個功能表。硬編碼看起來像:

listTableModel = new DefaultTableModel(new Object[][] {{1,1,1}{2,2,2},{3,3,3}}, new String[] {"Col1, Col2, Col3}); 
return listTableModel; 

此代碼不給我結果。我將它插入到面板中,並且它不顯示在面板上

我不確定爲什麼這樣不起作用,因爲我所做的所有研究都指出我這樣做... 任何幫助表示感謝,謝謝!

+1

爲了更好地幫助越早,考慮制定[SSCCE(HTTP://www.sscce。 org) – nachokk

+0

什麼不工作?!預期的和實際的結果是什麼? – SudoRahul

+0

@ R.J它不創建表。當我嘗試編輯(如設置列大小)時,它給了我一個索引越界異常。如果我註釋掉編輯我的表的代碼並將它添加到我的框架中,它甚至不會生成表。 – ola

回答

3

在這裏,你應該值使用呼叫並初始化行和列的對象爲表,試試這個代碼

import javax.swing.*; 
import javax.swing.table.DefaultTableModel; 

public class Test { 

private static final Object[][] rowData = {}; 
private static final Object[] columnNames = {"Column 1", "Column 2","Column 3"}; 

public void testCase() { 
    DefaultTableModel listTableModel; 
    listTableModel = new DefaultTableModel(rowData, columnNames); 
    for (int i = 1; i < 25; i++) { 
     String rowString = "Quiz #" + i; 
     listTableModel.addRow(new Object[]{rowString, "ICON", "ICON"}); 
    } 

    //listTableModel = new DefaultTableModel(50, 50); 

    JTable listTable; 
    listTable = new JTable(listTableModel); 
    listTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 
    listTable.setCellEditor(null); 
    listTable.setBounds(37, 143, 397, 183); 

    JFrame frame = new JFrame(); 
    frame.add(listTable); 
    frame.setVisible(true); 
    frame.pack(); 
} 

/** 
* @param args 
*/ 
public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Test tester = new Test(); 
    tester.testCase(); 

} 
} 
+0

我錯過了最初的行{}和列字段。非常感謝! – ola

+0

@ user1998581不客氣:-) – Husam