如何将字体颜色应用于使用DefaultTableModel的JTable上的特定单元格
我正在尝试创建一个连接到MS Access的简单To-Do列表Java应用程序,我使用JTable和DefaultTableModel来显示列表。 我想通过在单击按钮时更改其颜色来标记已完成的任务。 我有一个名为’ 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
,在大多数情况下,你必须从prepareRenderer
或getTableCellRendererComponent
内部转换模型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)
表的方法