为JTable指定特定于列的TableCellRenderers

时间:2012-08-29 18:43:04

标签: java swing jtable tablecellrenderer tablecolumn

我有一个JTable,其中有多列显示双精度数,其中一些是比率,另一些是美元值。我想指定一个TableCellRenderer用于比率,另一个用于美元值。

java教程说“要指定特定列中的单元格应使用渲染器,请使用TableColumn方法setCellRenderer”。这很有帮助,但我不清楚我应该在TableColumn上调用这种方法。有这样做的标准方法吗?我应该在其构造函数中创建一个自定义JTable吗?或者自定义TableColumnModel?理想情况下,我希望能够从我已经拥有的自定义TableModel执行此操作,尽管这似乎不太可能。

任何帮助将不胜感激。感谢

1 个答案:

答案 0 :(得分:5)

您可以通过以下方式在列上设置渲染器:

table.getColumnModel().getColumn(0).setCellRenderer(new TableRendererExample());

您可以编写自己的渲染器实现:

  class TableRendererExample extends DefaultTableCellRenderer {
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
      Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
      if (column == 1) {
        c.setForeground(Color.gray);
      }
      return c;
    }
  }
相关问题