1

如何使用 AbstractTableModel 预填充 JTable 的第一列?

我想在第一列中放入时间段,然后用其他内容填充其他列。

好的,因此 GUI 中的 JTables 将使用 ChannelTableModel。基本上它从 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.";
        }

    }

}

如何创建变量“row”以使 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 回答