jTable如何更改特定行上的单元格颜色。JAVA

jTable如何更改特定行上的单元格颜色。JAVA,java,swing,jtable,Java,Swing,Jtable,我制作了一个java应用程序来管理任务 我的应用程序连接到一个MySQL数据库 我需要优先级等于1的表行自动更改颜色。我一直在搜索并找到一些示例,但我无法使用我的表。 我的表是使用拖放创建的,因此它是默认类型,您可以通过代码看到 有人能帮我在我的小应用程序中实现这个功能吗 我真的很气馁 对不起大家 有人能帮我吗 我的jtable的代码 DefaultTableModel tmTasks = new DefaultTableModel(null, new String[]{"Status", "P

我制作了一个java应用程序来管理任务

我的应用程序连接到一个MySQL数据库

我需要优先级等于1的表行自动更改颜色。我一直在搜索并找到一些示例,但我无法使用我的表。 我的表是使用拖放创建的,因此它是默认类型,您可以通过代码看到

有人能帮我在我的小应用程序中实现这个功能吗

我真的很气馁

对不起大家

有人能帮我吗

我的jtable的代码

DefaultTableModel tmTasks = new DefaultTableModel(null, new String[]{"Status", "Priority", "Task", "Desc", "Date"});
List<Tasks> tasks;
ListSelectionModel lsmTasks;




private void showTasks(List<Tasks> tasks) {
        while (tmTasks.getRowCount() > 0) {
            tmTasks.removeRow(0);
        }
        if (tasks.size() == 0) {
            JOptionPane.showMessageDialog(null, "NO Tasks");
        } else {
            String[] line = new String[]{null, null, null};
            for (int i = 0; i < tasks.size(); i++) {
                tmTasks.addRow(line);            
                tmTasks.setValueAt(tasks.get(i).getStatus(), i, 0);
                tmTasks.setValueAt(tasks.get(i).getPriority(), i, 2);
                tmTasks.setValueAt(tasks.get(i).getTasks(), i, 1);
                tmTasks.setValueAt(tasks.get(i).getDesc(), i, 3);
                tmTasks.setValueAt(tasks.get(i).getDate(), i, 4);
            }
        }
    }
DefaultTableModel tmTasks=新的DefaultTableModel(空,新字符串[]{“状态”、“优先级”、“任务”、“说明”、“日期”});
列出任务;
ListSelectionModel lsmTasks;
私有void showTasks(列出任务){
while(tmTasks.getRowCount()>0){
tmTasks.removorow(0);
}
如果(tasks.size()==0){
showMessageDialog(null,“无任务”);
}否则{
字符串[]行=新字符串[]{null,null,null};
对于(int i=0;i
我的JT能够完成任务


您的表格需要一个单元格渲染器。像这样的

public class PriorityCellRenderer extends DefaultTableCellRenderer {
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {
        super.getTableCellRendererComponent(
                table, value, isSelected, hasFocus, row, column);
        if (Integer.valueOf(1).equals(table.getValueAt(row, 1))) {
            setForeground(Color.RED);  // or background
        }
        return this;
    }
}
安装渲染器:

table.setDefaultRenderer(Object.class, new PriorityCellRenderer());

昨天问的问题有什么问题,为了更好的帮助,请尽快发布一个SSCCE/MCVE简短、可运行、可编译且带有本地变量中JTable的硬编码值,因为双击是TableCellEditor的加速器,我不想总是带着这些问题,因为没有得到帮助而让我感到无聊,所以,试着做些不同的事情,不要屠杀那些好心帮助我的人。你说的是双击?代码在哪里?您可以使用
e.getClickCount==2
,这里
e
MouseEvent
@rpirez/,阅读您的一些需求是否符合…Integer==Integer,而不是equals@mKorbel为什么不呢?table.getValueAt()返回Object,因此我需要强制转换该值或使用equals。感谢回复@SergiyMedvynskyy。我试试你给我的密码。并更改所有行的颜色:S甚至更改值​​测试的优先级从表1到表2。@rpirez抱歉,我无法理解。所有行的前景现在是红色的还是只有优先级为1的行的前景?非常感谢@SergiyMedvynskyy。你真的帮了我。