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

时间:2012-04-10 10:52:27

标签: java swing jtable defaulttablemodel

我正在尝试创建一个连接到MS Access的简单待办事项列表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。

非常感谢示例代码。

3 个答案:

答案 0 :(得分:3)

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

  • JTable是基于TableModel的视图,在大多数情况下,您必须从prepareRenderer或{{1}内部转换模型converXxxToXxx的视图因为getTableCellRendererComponent可以对已过滤的

  • 进行排序
  • 方法

JTable

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

答案 1 :(得分:2)

使用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;
    }
};

答案 2 :(得分:0)

我相信您可以在

中指定此行为
TableCellRenderer.getTableCellRendererComponent(JTable table, Object value,
                        boolean isSelected, boolean hasFocus, 
                        int row, int column)

表的方法