gpt4 book ai didi

java - 创建具有多个列标题和行标题的自定义 TableModel

转载 作者:行者123 更新时间:2023-12-02 12:51:04 27 4
gpt4 key购买 nike

我正在尝试创建一个类似于下面的模型的 JTable:

custom JTable

绿色角基本上是红色列标题和行标题的缓冲区空间。单元格不需要渲染成图中的颜色;但是,它们需要与表中其他“白色”单元格区分开来。

该表也不可编辑或选择;它仅在更新时由用户查看。

我知道这可以使用 DefaultTableModel 来实现,该模型具有第 1,2 行和第 1,2 列的自定义渲染,并在设置和获取表值时添加 +2(考虑用作标题的行和列)。

我的问题如下:

  1. 有没有一种更简洁的方法可以做到这一点,而不会因为 header 中使用的这些静态值而污染我的表模型?
  2. 我读过有关扩展表模型的内容,但不确定应该扩展哪个类(DefaultTableModel、AbstractTableModel)以及应该重写哪些方法。

最佳答案

Input is limited to 20x20 so including the headers that's 22x22.

还可以考虑一个包含 JPanelJScrollPane,该 JPanel 具有 GridLayout 并包含 22x22 实例 JLabel 或合适的子类。这可以轻松扩展到数千个单元。

附录:如果需要,CellRendererPane 是一个很好的 flyweight渲染器,按照建议here .

如果您使用 JTable 来实现渲染可扩展性,

  1. 这并非滥用行为;这正是 TableModel 的用途。 TableModel 对您决定的任何内容建模矩形矩阵。 JTable 只是该模型的一个(有效呈现的) View 。

  2. 我更喜欢 AbstractTableModel,如图 here ,因为 Vector 很少是所需的数据结构。使用任何使您的索引最方便的容器。 DefaultTableModel 很方便,可以作为扩展 AbstractTableModel 的指南。特别是,您需要一个 setValueAt()

    @Override
    public void setValueAt(Object aValue, int row, int col) {
    ... // update your data structure
    this.fireTableCellUpdated(row, col); // notify the view
    }

关于java - 创建具有多个列标题和行标题的自定义 TableModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10262521/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com