Укажите специфичные для столбца TableCellRenderers для JTable

У меня есть JTable с несколькими столбцами, в которых отображаются двойники, некоторые из которых являются отношениями, а другие - долларовыми значениями. Я хотел бы указать TableCellRenderer, который будет использоваться для соотношений, а другой - для значений в долларах.

В руководствах по java говорится: «Чтобы указать, что ячейки в определенном столбце должны использовать средство визуализации, вы используете TableColumn метод setCellRenderer». Это полезно, но мне неясно, в какой момент мне следует вызывать этот метод на моих TableColumns. Есть стандартный способ сделать это? Должен ли я сделать пользовательский JTable, который делает это в своем конструкторе? Или кастомный TableColumnModel? В идеале я хотел бы иметь возможность делать это из уже имеющегося у меня пользовательского TableModel, хотя маловероятно, что это возможно.

Любая помощь будет оценена по достоинству. Спасибо


person Peter Berg    schedule 29.08.2012    source источник


Ответы (1)


Вы можете установить средство визуализации для столбца следующим образом:

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;
    }
  }
person Dan D.    schedule 29.08.2012
comment
+1 Ты меня опередил! Соответствующий пример есть здесь. - person trashgod; 29.08.2012