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

时间:2014-06-03 09:33:11

标签: java swing jtable

我制作了一个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);
            }
        }
    }

我的任务jtable!

enter image description here

1 个答案:

答案 0 :(得分:1)

您的桌子需要一个单元格渲染器。像这样的东西

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());