Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JTable中设置特定行的颜色_Java_Jtable - Fatal编程技术网

Java 如何在JTable中设置特定行的颜色

Java 如何在JTable中设置特定行的颜色,java,jtable,Java,Jtable,我想为表中的特定行设置颜色。 我已经实现了getBadRows()方法,该方法返回带有我想要突出显示的键(行数)的映射。看看我的代码: private static class WorkingTimeCellRenderer extends DefaultTableCellRenderer { @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean i

我想为表中的特定行设置颜色。 我已经实现了getBadRows()方法,该方法返回带有我想要突出显示的键(行数)的映射。看看我的代码:

private static class WorkingTimeCellRenderer extends DefaultTableCellRenderer {
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
                                                   boolean hasFocus, int row, int column) {
        if (value instanceof Date) {
            value = new SimpleDateFormat("dd.MM.yyyy").format(value);
        }
        Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
        WorkingTimeTableModel model = (WorkingTimeTableModel) table.getModel();

        for (Map.Entry<String, Integer> r : model.getBadRows().entrySet()) {
            c.setForeground(row == Integer.parseInt(r.getKey()) ? Color.RED : Color.BLACK);
        }

        return c;
    }
}
私有静态类WorkingTimeCellRenderer扩展了DefaultTableCellRenderer{
@凌驾
公共组件GetTableCellRenderComponent(JTable表、对象值、布尔值、,
布尔值(焦点、整数行、整数列){
if(值instanceof Date){
值=新的SimpleDataFormat(“dd.MM.yyyy”)。格式(值);
}
Component c=super.getTableCellRenderComponent(表、值、isSelected、hasFocus、行、列);
WorkingTimeTableModel=(WorkingTimeTableModel)table.getModel();
对于(Map.Entry r:model.getBadRows().entrySet()){
c、 set前台(row==Integer.parseInt(r.getKey())?Color.RED:Color.BLACK);
}
返回c;
}
}
例如,当我在地图中有四个项目时,此方法仅高亮显示地图中的最后一个项目。前面的项目不会突出显示,因为调用c.setForeground()时,它看起来总是刷新的

我想突出显示存储在地图中的行。Map的键与表中的行索引相对应


我不知道如何做到这一点:(我已经尝试了很多方法。

不要在末尾使用for循环,只需检查getTableCellRenderComponent参数中的行号是否与其中一个错误行匹配。如果是,请将颜色设置为红色,如果不是黑色

也许是

Color color = model.getBadRows().contains(row) ? Color.RED : Color.BLACK;
c.setForeground(color);

非常感谢!它很有效,我非常感谢你的帮助。