2009-12-14 26 views
0

鑑於javax.swing.table.TableColumn ...是否有可能以某種方式指定TableCellRenderer/TableCellEditor用於給定類型,而不是讓TableColumn使用相同的TableCellRenderer/TableCellEditor?Java Swing:不同的TableCellRenderers

我知道我可以在JTable中指定一些DefaultCellEditor/Renderer,但這不是我想要的。

由於細節(遺留代碼細節),我無法覆蓋JTable#getCellEditor(int,int)JTable#getCellRenderer(int,int)

欣賞任何建議...

回答

4

我不太熟悉的TableCellRenderer,以確保這是適當的,但你能不能指定一個看起來在內容,然後分派到基於該類型的其他渲染器?

+0

非常感謝您的建議!這解決了我的問題!我現在正在實現TableCellRenderer接口並檢查類型,並轉發到所需的CellRenderer。 – 2009-12-14 17:00:29

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) 

還是照Carl說的那樣做。您的單個編輯器渲染器會查看它返回的值並委託給其他一些渲染器/編輯器。

+0

這些將爲整個表格上的類型設置默認的編輯器/渲染器。我認爲目標只是將它們設置爲一列或一組列。 – akf 2009-12-14 15:30:56

2

請注意,setDefaultRenderer()setDefaultEditor()每個指定一個特定的類應爲其調用。使用自定義的 渲染器和編輯器設計複合類型相當容易,如建議的in this example。數據模型應該返回給定列的自定義類型,但渲染器和編輯器可以根據內容或行自由解釋這些值。在該示例中,Value被建模爲BooleanDouble。相應的視圖使用複選框和格式化的十進制字符串,而ValuecompareTo()方法確保數字排序。