-1

ループを使用してテーブルに行を追加しようとしています。私が持っているコードは次のとおりです。

 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;

このコードでは結果が得られません。パネルに挿入していますが、パネルに表示されません

私が行ったすべての調査で、このようにすることが指摘されているため、なぜこれが機能しないのかわかりません...助けていただければ幸いです。

4

1 に答える 1

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

}
}
于 2013-10-04T19:05:26.470 に答える