SwingJTable
中的列使用单元格渲染器显示。您应该阅读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());