【问题标题】:Populating First Column of a JTable填充 JTable 的第一列
【发布时间】:2012-04-24 23:02:13
【问题描述】:

如何使用 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 可用?

【问题讨论】:

  • AbstractTableModel 是抽象的,因此在没有进一步实现的情况下无法使用。你能发布一些代码来展示你在做什么吗?
  • 如何创建变量“row”以使 TableModel 可用? rowIndex 作为参数传递给该方法的是行...为什么不使用那个?
  • 另见EnvTableTest

标签: java swing user-interface jtable abstracttablemodel


【解决方案1】:

通常您只会对第一列进行特殊处理。例如,如果“真实数据”在矩阵中。示意图:

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];
    }

}

附言与您的订购相比,我在矩阵上的订购错误有 50/50 的可能性。 :-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    • 2018-12-14
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多