【问题标题】:Use custom JTableCellRenderes [duplicate]使用自定义 JTableCellRenderes [重复]
【发布时间】:2018-12-20 11:50:33
【问题描述】:

我有一个 6 列的 JTable。在表格中添加一行时,我需要为第一行的最后一个单元格添加黑色。第二行的红色。相应的颜色来自不同的方法。这是我的自定义表格单元格渲染器。

class CustomRenderer extends DefaultTableCellRenderer
{
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column, Color color)
    {
        JLabel label = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
        label.setBackground(color);
        return label;
    }
}

这是我在添加表格行时使用它的方式。

  private void addTableRow(String type, String name, String rank, String notes, String location, Color color)
    {
        boolean isExport = isExportEnable();
        tableModel.addRow(new Object[]
        {
            type,
            name,
            rank,
            notes,
            location,
            isExport
        }
        );
        for (int i = 0; i < tableModel.getRowCount(); ++i)
        {
            JTable.getColumnModel().getColumn(6).setCellRenderer((TableCellRenderer) new CustomRenderer().getTableCellRendererComponent(null, null, false, false, i, 6, color));
        }
    }

当我添加第一行时,它会得到正确的颜色。但是当我添加第二行时,第一种和第二种颜色的单元格都填充了第二种颜色。我怎样才能得到确切的行。 其实我想要的是在添加一行的同时用不同的颜色填充每一行的最后一个单元格。

【问题讨论】:

  • “虽然我早些时候发布了这个问题,但我没有得到确切的答案。” 是什么让您认为这个问题会得到不同的答案?它在某些方面有所不同吗?无论哪种方式,您都应该edit 一个现有问题,而不是开始一个新问题。

标签: java swing jtable tablecellrenderer


【解决方案1】:

你需要去看看Concepts: Editors and RenderersUsing Custom Renderers,因为你显然不明白渲染器在Swing中是如何工作的。

您永远不要向JTableTableModel 添加组件,这不是它的责任。

您将JTableTableColumns 配置为使用特定的渲染,例如...

table.getColumnModel().getColumn(6).setCellRenderer(new CustomRenderer);

假设您想要特定列的特定渲染器,并且没有为某种类型的对象配置它

【讨论】:

  • 我得到了解决方案,但随后又遇到了另一个问题。用正确的解决方案和新问题更改了问题。
  • 我还在为上述问题苦苦挣扎,谁能帮忙?
  • “实际上我想要的是在添加一行的同时用不同的颜色填充每一行的最后一个单元格” - 并不是真的如何工作。一列有一个渲染。您需要做的是用您想要使用的颜色为单元格的值播种,然后根据该值更改渲染器
  • 你能给我举个例子吗?
猜你喜欢
  • 2016-08-25
  • 1970-01-01
  • 2018-09-03
  • 2016-09-18
  • 2021-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多