2013-10-04 56 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