swing中的jtable-在线等,急

yangdanfeng95578076 2008-02-22 12:44:47
如何实现选择jtable中一行,然后单击ok按钮,使选中的这一行变成其他颜色
...全文
104 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
谢谢olivesoup,我解决问题了
  • 打赏
  • 举报
回复
class DateRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column){
Component com =super.getTableCellRendererComponent(table, value,
isSelected, hasFocus,
row, column);
for(int i=0;i<selectRows.length;i++)
if (selectRows[i]==row)//你要变色的行
{ com.setBackground(Color.red);
break;}
return com;
}
}
selectRows=listTable.getSelectedRows();
listTable.setDefaultRenderer(Object.class,new DateRenderer());
我的代码是这样写的,但是执行完一次,在行上直接单击行也变色,不知道什么原因
olivesoup 2008-02-22
  • 打赏
  • 举报
回复
改变多行只需要增加判断条件就行

if (row==selectedIndex1 || row==selectedIndex2 || row==selectedIndex3 ......) {
setBackground(ec);
}

当然你可以把这些行号装在容器中,比如list,array,
然后改变一下写法

if (list.contains(row)) {
setBackground(ec);
}

  • 打赏
  • 举报
回复
我这样做乐,但是没有能实现,不知道什么原因,加上我要具体做的是选择多行,单击按钮也要实现行颜色改变
olivesoup 2008-02-22
  • 打赏
  • 举报
回复
1.按钮加事件监听器
2.点击按钮,触发事件,重写DefaultTableCellRenderer中的getTableCellRendererComponent方法
3.根据选中行的index,改变背景色

关键代码如下

jTable.setDefaultRenderer(Object.class, new MyCellRenderer());

class MyCellRenderer extends DefaultTableCellRenderer {
private static final long serialVersionUID = 1L;
private final Color ec = new Color(255, 255, 204);
public Component getTableCellRendererComponent(
JTable table, Object data, boolean isSelected, boolean hasFocus, int row, int column) {
if (row==selectedIndex) {
setBackground(ec);
}
setText((String) data);
return this;
}
}

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧