如何将字体颜色应用于使用DefaultTableModel的JTable上的特定单元格

我正在尝试创建一个连接到MS Access的简单To-Do列表Java应用程序,我使用JTableDefaultTableModel来显示列表。 我想通过在单击按钮时更改其颜色来标记已完成的任务。 我有一个名为’ completed ‘的布尔字段作为指标。

String header[] = {"priority", "task"}; String data[][]; DefaultTableModel model = new DefaultTableModel(data, header); JTable table = new JTable(model); // to be replaced with code that affects only specific cells not the whole table table.setFont(customFont); 

我已经有一个名为customFont的Font对象,可以应用它。 我的问题是,如何将它仅应用于已完成== true的特定单元格。

我们非常感谢示例代码。

  • 最简单的方法是看看prepareRenderer() ,最重要的是@camickr Table Row Rendering

  • JTable是View,基于TableModel ,在大多数情况下,你必须从prepareRenderergetTableCellRendererComponent内部转换模型converXxxToXxx的视图,因为JTable可以被分类为过滤

  • 方法

 public Component prepareRenderer(TableCellRenderer renderer, int row, int column) { Component c = super.prepareRenderer(renderer, row, column); 

返回对JTable中特定单元格的访问 – ( TableCellRenderer renderer,int row,int column )

使用DefaultTableCellRenderer,然后可以使用setForeground()和setBackground()。

请参阅页面.. http://www.jyloo.com/news/?pubId=1282737395000

或看到这个例子……

 /*This is the raw code I have written.*/ JTable Tbl=new JTable(2,2){ DefaultTableCellRenderer colortext=new DefaultTableCellRenderer(); { colortext.setForeground(Color.RED); } @Override public TableCellRenderer getCellRenderer(int arg0, int arg1) { return colortext; } }; 

我相信你可以在中指定这种行为

 TableCellRenderer.getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) 

表的方法