0

JTable を更新した後、なぜ列名が「A」、「B」、「C」という名前になるのかわかりません。

JTable を更新するクラスを作成しました。

public class TableModelClass extends AbstractTableModel
{
    Object[][] data;
    Object[] title;

public TableModelClass(Object[][] dat, Object[] tit)
{
    data = dat;
    title = tit;    
}

@Override
public int getColumnCount()
{
    if(title != null)
        return title.length;
    return 0;
}

@Override
public int getRowCount()
{
    if(data != null)
        return data.length;
    return 0;
}

@Override
public Object getValueAt(int rowIndex, int columnIndex)
{
    return data[rowIndex][columnIndex];
}

}

クラスで JTables の値をデフォルトに設定します。

Object[] titlesDefault = { "tit1", "tit12","tit3"};
Object[][] dataDefault = {{ "1", "2","3"},
            {"1", "2","3"}};


       _jTable = new JTable(dataDefault, titlesDefault);    

_bAddTable.addActionListener(new ActionListener()
    {           
        @Override
        public void actionPerformed(ActionEvent arg0)
        {
                try
                {
                Object[] titles2 = { "1", "2","3", "1", "2","3"};
                Object[][] data = {{ "1", "2","3"},
                                   { "1", "2","3"},
                       {"1", "2","3"}};
                data.setModel(new TableModelClass(data, titles2));
                } 
                catch (ClassNotFoundException)
                {

                    e1.printStackTrace();
                }               

         };
        });

そして、この後、列名に文字を受け取ります。なんで?

4

1 に答える 1

3

をオーバーライドしないgetColumnNameと、TableModelは "A"、"B"、"C" などのデフォルト値を使用します。

@Override
public String getColumnName(int column) {
    return title[column];
}

Stringこれが機能するには、スーパークラスの戻り値の型に対応するようにa を返す必要があります。title変数は型として定義する必要がありますString[]

于 2013-08-14T20:58:24.480 に答える