使用單元格渲染器顯示Swing JTable
中的列。您應該在Java教程中閱讀How to Use Tables,其中有一節介紹機制如何工作。這是一個自定義單元格渲染器的核心方法的樣子:
public Component getTableCellRendererComponent(JTable table, Object color,
boolean isSelected, boolean hasFocus,
int row, int column) {
這種方法的任務是選擇和準備Component
(通過設置所需的顏色,字體,圖片...)爲特定的行並且該框架將使用其上的Graphics
上下文。有一個DefaultTableCellRenderer
可以做竅門,沒有太多的自定義代碼(請參閱教程)。請注意,這種渲染機制是Swing開發人員選擇的一種優化。
您還可以在Swing Hacks中瞭解到很多關於定製Swing組件的信息。這些例子並不是特別精心設計的代碼,只是展示瞭如何創造性地使用Swing API。
祝你好運!
實施例(見註釋):
final JTable orderTable = new JTable(dataModel);
// All columns with class Boolean are renderered with MyFancyItemRenderer
orderTable.setDefaultRenderer(Boolean.class, new MyFancyItemRenderer());
// Setting the cell renderers explicitly for each column
final TableColumnModel columnModel = orderTable.getColumnModel();
final TableColumn itemCountColumn = columnModel.getColumn(ITEM_COUNT);
itemCountColumn.setCellRenderer(new MyFancyItemRenderer());
// ...
final TableColumn sumColumn = columnModel.getColumn(SUM);
sumColumn.setCellRenderer(new MyFancyPriceRenderer());
參見示出的方法(這裏)(http://stackoverflow.com/q/7690614/230513)。 – trashgod
這看起來相當不錯,謝謝@trashgod!如果Jens的解決方案證明實施起來太複雜,我會試試這個。 – nameless912