填充JTable的第一列

时间:2012-04-12 15:02:57

标签: java swing user-interface jtable abstracttablemodel

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

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

好的,所以ChannelTableModel将由GUI中的JTables使用。基本上它从6.30到24:00设置30分钟的时间段。时隙必须放在JTable的第一行

在某种程度上,我需要设置一个变量' row'获取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.";
        }

    }

}

如何创建变量&#34; row&#34;使TableModel可行?

1 个答案:

答案 0 :(得分: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];
    }

}

P.S。与您的订购相比,矩阵的订购错误有50/50。 : - )