1

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

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 的特定单元格。

示例代码将不胜感激。

4

3 回答 3

4
  • 最简单的方法是查看prepareRenderer(),最好的是 @camickr Table Row Rendering

  • JTable是视图,基于,在大多数情况下,您必须从or内部TableModel针对模型converXxxToXxx转换视图,因为可以对过滤进行排序prepareRenderergetTableCellRendererComponentJTable

  • 方法

代码

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

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

于 2012-04-10T11:03:26.987 回答
3

使用 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;
    }
};
于 2012-04-10T11:09:01.117 回答
0

我相信您可以在

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

表法

于 2012-04-10T10:58:59.973 回答