小弟现在在做排课算法,其中有一模块是录入老师不便排课的时间,在一个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()
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()
解决方案 »
- Mysql jdbc 连接异常:Last packet sent to the server was 18948 ms ago
- 页面跳转问题
- java开源项目
- 师兄帮我介绍下
- 哪位大哥能帮我做个题目啊。。急!!!
- 求助!!! java jsp调用action中的方法!!!
- struts的困惑
- 如何将dom里的类似xmltree的对象放置到一个jTable中,如何映射
- weblogic.servlet.internal.ServletContextImpl 在哪个jar文件里
- 求助 quartz 设置时间段
- 为什么Linux下的Eclipse菜单项不显示图标?
- 如何Debug JAVA api源码
JTable N久没用过了
你写的内容太多,也没仔细看……