【问题标题】:How to apply Font color to specific cells on JTable that uses DefaultTableModel如何将字体颜色应用于使用 DefaultTableModel 的 JTable 上的特定单元格
【发布时间】:2012-04-10 10:52:26
【问题描述】:

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

非常感谢示例代码。

【问题讨论】:

    标签: java swing jtable defaulttablemodel


    【解决方案1】:
    • 最简单的方法是查看prepareRenderer(),最好的是@camickr Table Row Rendering

    • JTable 是基于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)

    【讨论】:

    • @mKorbel,感谢您给我一个好主意和链接。我想这就是我正在寻找的东西......但我可能很快仍有问题,因为我是单元格渲染的新手。
    • @Mr. Xymon 在大多数情况下是简单的工作,但是在任何渲染之前,您必须检查(如果 - else)行和列是否存在,那么非常简单的工作
    【解决方案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;
        }
    };
    

    【讨论】:

      【解决方案3】:

      我相信您可以在

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

      表格的方法

      【讨论】:

      • 不是表格法。参见 public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
      猜你喜欢
      • 2021-03-02
      • 1970-01-01
      • 1970-01-01
      • 2014-02-17
      • 2013-01-03
      • 1970-01-01
      • 2015-01-28
      • 2012-08-25
      • 2014-09-24
      相关资源
      最近更新 更多