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

Смежные вопросы