小弟现在在做排课算法,其中有一模块是录入老师不便排课的时间,在一个5*5的Jtable中通过点击相应的单元格来设置时间。5*5的Jtable刚开始全部为白色(表示都可用),当点击某一个单元格之后需要将其颜色设置为绿色(表示不可用),但当再次点击绿色的单元格时需将其再还原为白色(解决操作失误问题)。自己的思路是用一个time[5][5]数组,全部初始化为1,当点击一次就将对应的值*(-1)来改变其值,然后遍历整个数组将值为-1对应的单元格置为蓝色。1,该事件应设置为mousePress(),mouseExited(),还是应该为某一按钮的事件。(自己尝试mousePress()效果是点击才有颜色,释放后就没有了;mouseExited()鼠标在Jtable内的时候可以,但鼠标移出后所有单元格都没有颜色了;加在“确认”按钮中会不停的闪烁)。2,我需要的是持久的颜色显示,点击莫一个单元格仅仅只有这个单元格变色(其它单元格的颜色变)。自己的代码如下,希望大家能给点建议,谢谢了!!
 int select = jTable1.getSelectedRow();
            System.out.println("行:"+jTable1.getSelectedRow()+"列:"+jTable1.getSelectedColumn());
            if (select < 0)   //设置Jtable2的事件 此处是获取老师的id
                    id = 0;
            else if (" ".equals(jTable1.getValueAt(0, select).toString()))
                    id = 0;
            else
                    id = Integer.parseInt(jTable1.getValueAt(select, 0).toString());  /
            if (id >= 1&&jTable2.getSelectedColumn()>0)   //这个地方开始
            {
                    class EvenOddRenderer implements TableCellRenderer  //用来设置单个单元格颜色的类
                    {
                            public final DefaultTableCellRenderer DEFAULT_RENDERER =
                                    new DefaultTableCellRenderer();
                            @Override
                            public Component getTableCellRendererComponent(JTable table, Object value,
                                    boolean isSelected, boolean hasFocus, int row, int column)
                            {
                                    Component renderer =
                                            DEFAULT_RENDERER.getTableCellRendererComponent(table, value,
                                            isSelected, hasFocus, row, column);
                                    Color foreground = Color.BLACK, background = Color.WHITE;
                                    int row1 = jTable2.getSelectedRow();  //获取行号列号
                                    int column1 = jTable2.getSelectedColumn();
                                    time[id][row1+1][column1+1] = time[id][row1+1][column1+1]*(-1);
                                    for (int i = 1; i <= 5; i++)  
                                    {
                                            for (int j = 1; j <= 5; j++)
                                            {
                                                    jTable2.setValueAt(time[id][i][j], i-1, j-1);
                                                    if (time[id][i][j] == -1)
                                                    {
                                                            if (row == i-1 && column == j-1)
                                                            {
                                                                    foreground = Color.red;
                                                                    background = Color.BLUE;
                                                            } else
                                                            {
                                                                    foreground = Color.BLACK;
                                                                    background = Color.WHITE;
                                                            }
                                                    }
                                            }
                                    }                                    renderer.setForeground(foreground);  
                                    renderer.setBackground(background);
                                    return renderer;
                            }
                    }
                    jTable2.setModel(new javax.swing.table.DefaultTableModel(   //这个是表的格式
                            new Object[][]
                            {
                                    {
                                            null, null, null, null, null
                                    },
                                    {
                                            null, null, null, null, null
                                    },
                                    {
                                            null, null, null, null, null
                                    },
                                    {
                                            null, null, null, null, null
                                    },
                                    {
                                            null, null, null, null, null
                                    }
                            },
                            new String[]
                            {
                                    "星期一", "星期二", "星期三", "星期四", "星期五"
                            }));
                    jTable2.setRowHeight(40);
                    jTable2.setDefaultRenderer(Object.class, new EvenOddRenderer()