3

我有一个 JTable(或者更准确地说是 JXTable),其中包含我想要划分的 3 个分组列。我曾经有 3 个以编程方式链接的表(滚动条位置、排序、选择)。我使用了很多代码来获得这个链接,我想摆脱这个。现在我正在切换到 1 个 JXTable,因为在这个表类中有一些更好的东西。

对于几乎相同的问题,我找到了一些(不是很令人满意)的解决方案。也许有人对我有一个很好的建议。

选项 1:一个空列作为分隔符(另一种颜色,如灰色),并在使用箭头或制表键时以编程方式跳过该空列。

选项 2:将 1 列的一侧的边距设置为更大的尺寸,所以它看起来像一个分隔线。直到现在我才知道如何设置所有列的边距

选项 3:再次回到 3 个单独的表格(尤其是要以相同的方式对表格进行排序需要大量工作,因为我不想重复单独部分中的列)。这意味着我必须重写我的表格排序器,对不可见的列进行排序。

欢迎任何建议(如果它不是三个给定选项中的任何一个)

4

1 回答 1

4

通过覆盖第 3 列上的单元格渲染器以具有较厚的右边框而没有其他边框,我制作了一些看起来有点像您想要的东西。您可以在表格列标题中执行相同的操作,以使边框向上延伸。它显然将边框放置在单元格内,但这对您来说可能就足够了。

  {
    ....
    table.getColumnModel().getColumn(2).setCellRenderer(
        new ThickRightBorderCellRenderer());
    ....
  }

  private static class ThickRightBorderCellRenderer
          extends DefaultTableCellRenderer {

    @Override
    public Border getBorder() {
      return BorderFactory.createMatteBorder(0, 0, 0, 3, Color.BLACK);
    }
  }

例子

于 2012-01-03T13:41:00.370 回答