2009-12-14 3 views
0

С учетом javax.swing.table.TableColumn ... возможно ли каким-то образом указать TableCellRenderer/TableCellEditor для использования для данного типа, а не для TableColumn использовать тот же TableCellRenderer/TableCellEditor?Java Swing: Различные TableCellRenderers

Я знаю, что я могу указать некоторый DefaultCellEditor/Renderer в JTable, но это не то, что я хочу.

Из-за деталей (спецификация старого кода) я не могу переопределить JTable#getCellEditor(int,int) и JTable#getCellRenderer(int,int).

Цените любые предложения ...

ответ

4

Я не достаточно знаком с TableCellRenderer, чтобы быть уверенными, что это необходимо, но вы не могли бы указать тот, который смотрит на содержании, а затем отправляет в другие рендерер на основе типа ?

+0

Большое спасибо за предложение! Это решило мою проблему! Теперь я реализую интерфейс TableCellRenderer и проверяю тип, перенаправляя требуемый CellRenderer. –

2
public void setDefaultEditor(java.lang.Class<?> columnClass, 
          javax.swing.table.TableCellEditor editor) 

public void setDefaultRenderer(java.lang.Class<?> columnClass, 
           javax.swing.table.TableCellRenderer renderer) 

Или сделать так, как сказал Карл. Ваш единственный редактор рендеринга смотрит на возвращаемое им значение и делегирует некоторые другие рендереры/редакторы.

+0

Они будут устанавливать редактор/рендеринг по умолчанию для типов в таблице в целом. Я считаю, что цель состоит в том, чтобы установить их только для столбца или набора столбцов. – akf

2

Обратите внимание, что setDefaultRenderer() и setDefaultEditor() каждый указывает конкретный класс, для которого они должны быть вызваны. Довольно легко разработать составной тип с помощью настраиваемого визуализатора и редактора , как предложено in this example. Модель данных должна возвращать этот настраиваемый тип для данного столбца, но рендеринг и редактор могут свободно интерпретировать такие значения произвольно на основе содержимого или строки. В этом примере Value моделируется как Boolean, так и Double. В соответствующем представлении используется флажок и форматированная десятичная строка, тогда как метод ValuecompareTo() обеспечивает цифровую сортировку.