1

AbstractTableModel を使用して JTable の最初の列を事前設定するにはどうすればよいですか?

最初の列にタイムスロットを入れてから、他の列に何か他のものを入力したいと思います。

さて、ChannelTableModel は GUI の JTables によって使用されます。基本的に6:30~24:00の30分の時間帯を設定。タイムスロットは JTable の最初の行に配置する必要があります

何らかの方法で、AbstractTableModel で行の値を取得するために変数「行」を設定する必要がありますが、これは難しいと感じています。

以下はこれまでのコードです。

コード:

import java.util.List;
import javax.swing.table.AbstractTableModel;


public class ChannelTableModel extends AbstractTableModel
{


    public ChannelTableModel(List<Program> schedule)
    {
        this.channel= schedule;
    }


    public int getColumnCount() 
    {
        return 3;
    }


    public int getRowCount() 
    {
        return 37;
    }


    public Object getValueAt(int rowIndex, int columnIndex) 
    {

        switch (columnIndex)
        {
        case 0: return 6+((row*30) / 60)+":"+(row % 2 == 0 ? "00" : "30") + " - " + (6 +(((row+1)*30) / 60)+":"+(row % 2 != 0 ? "00" : "30"));
        default: return "Not Available.";
        }

    }

}

TableModel を機能させるために変数「行」を作成するにはどうすればよいですか?

4

1 に答える 1

0

多くの場合、最初の列だけを特殊なケースにします。たとえば、「実際のデータ」が行列にある場合。概略的に:

public class AddColumn0TableModel extends AbstractTableModel {

    final int columnCount, rowCount;
    final Object wrappedData[][];

    public AddColumn0TableModel(Object[][] wrappedData) {
       this.wrappedData = wrappedData;
       //  assume nice square data, YMMV
       columnCount= 1 + wrappedData.length;
       rowCount = wrappedData[0].length;
    }

    public int getRowCount() { return rowCount; }

    public int getColumnCount() { return columnCount; }

    public Object getValueAt(int row, int column) {
       if (column == 0)
         // implement this, in your case the time slot
         return theSpecialThingForColumn0(row);
       else
          return wrappedData[column-1][row];
    }

}

ps 50/50 の確率で、行列の順序が間違っている可能性があります。:-)

于 2012-04-12T16:15:46.513 に答える