JTable或JXTable中的列分隔符

时间:2012-01-03 13:01:08

标签: java jtable swingx jxtable

我有一个JTable(或更精确的JXTable),我想分割3个分组列。 我曾经有3个表,我编程链接(滚动条位置,排序,选择)。我使用了很多代码来实现这个链接,我想摆脱这个。 现在我正在切换到1 JXTable,因为在这个表类中有一些更好的东西。

我发现一些(不太令人满意的)解决方案几乎同样的问题。 也许有人对我有好的建议。

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

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

选项3:再次返回3个单独的表(特别是以相同的方式对表进行排序是很多工作,因为我不想在单独的部分重复这些列)。这意味着我必须重写我的表格分类器,在不可见的列上进行排序。

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

1 个答案:

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

Example