Swing JTable中checkBox的问题 谁能帮帮我?

xierong2011 2011-08-19 09:15:37
JTable中有6行6列 的checkBox 现在要实现 每行每列 中只能选一个?怎么实现有具体代码为佳 小妹先说声谢谢了

...全文
324 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
AttaGain 2012-10-25
  • 打赏
  • 举报
回复
将JTable添加鼠标监听,判断当前选中的单元格对应的行和列是不是有已经选择的,再做判断,本次Check的操作应该如何处理。
我有一个通过设置单元格中的CheckBox,改变标题中的CheckBox的状态,就是使用此类方法实现的。
我的博客中有比较详细的说明,不知道是否满足你的需求。
http://blog.csdn.net/attagain/article/details/8112771
阳明 to life 2011-08-19
  • 打赏
  • 举报
回复
遍历可能还方便点。。。
比如有check1 check2 check3 check4 check5 check6
所有的check添加同一个监听,触发监听之后判断是哪个check触发的,然后勾选上触发的check(如果当前没勾选的话),去除其他所有的check
luohuijun619 2011-08-19
  • 打赏
  • 举报
回复
ButtonGroup

把他们放到一个组里面
xierong2011 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 knightzhuwei 的回复:]
选中的时候遍历所在的该行该列 把其他的checkbox都置为未选中 不就行了
[/Quote]

class MouseHandler implements MouseListener {

boolean isPress=false;
public void doPro(MouseEvent e) {
// TODO Auto-generated method stub

Object target = e.getSource();
if((JTable)target!=table_1){
return;
}
int selectRow;
int selectCol;
selectRow=table_1.getSelectedRow();
selectCol=table_1.getSelectedColumn();
if (selectRow < 0) {
return;
}
if (selectCol < 0) {
return;
}
Object obj = table_1.getValueAt(selectRow, selectCol);
Boolean val = (Boolean) obj;
if(val.booleanValue()){
for(int i=0;i<table_1.getModel().getRowCount();i++){
table_1.setValueAt(Boolean.FALSE, i, selectCol);

}
for(int i=0;i<table_1.getModel().getColumnCount();i++){
table_1.setValueAt(Boolean.FALSE, selectRow, i);

}

}


}

@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
if(isPress){
doPro(e);
isPress=false;
}
}

@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub

}

@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub

}

@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
isPress=true;

}

@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub

}

}

你好看看 我这个怎么实现不了啊 谢谢啊
24K純帥 2011-08-19
  • 打赏
  • 举报
回复
用JRadioButton行不行啊..
xierong2011 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 softroad 的回复:]
每行一个ButtonGroup
[/Quote]

这个我都做过 每行添加Groupbutton 实现的每航 只能选一个 我要实现你选中的项 所在的当前列 也要一个呀
softroad 2011-08-19
  • 打赏
  • 举报
回复
每行一个ButtonGroup
xierong2011 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 knightzhuwei 的回复:]
选中的时候遍历所在的该行该列 把其他的checkbox都置为未选中 不就行了
[/Quote]

具体怎么遍历啊 我刚学这个 能不能说详细点 谢谢拉
xierong2011 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 softroad 的回复:]
又是小妹,上次都是你

ButtonGroup
[/Quote]

嗯 上次问题解觉得不彻底 这个只能实现 一行 或一列 只能选一个 我要实现的是 每行 每列 中都只能选一个
我嘞个去 2011-08-19
  • 打赏
  • 举报
回复
为什么 只能每行每列选一个呢?
softroad 2011-08-19
  • 打赏
  • 举报
回复
又是小妹,上次都是你

ButtonGroup
knightzhuwei 2011-08-19
  • 打赏
  • 举报
回复
选中的时候遍历所在的该行该列 把其他的checkbox都置为未选中 不就行了
nerd00 2011-08-19
  • 打赏
  • 举报
回复
这个其实很简单,用ButtonGroup可以实现。
private ButtonGroup row1=new ButtonGroup();
private ButtonGroup row2=new ButtonGroup();
private ButtonGroup row3=new ButtonGroup();
然后在每个checkbox里面row1.add(checkbox).row2.add(checkbox).row3.add(checkbox).
同理,可以实现列的唯一性……
nerd00 2011-08-19
  • 打赏
  • 举报
回复
这个其实很简单,用ButtonGroup可以实现。
private ButtonGroup row1=new ButtonGroup;
private ButtonGroup row2=new ButtonGroup;
private ButtonGroup row3=new ButtonGroup;
然后在每个checkbox里面row1.add(checkbox).row2.add(checkbox).row3.add(checkbox).
同理,可以实现列的唯一性……
xierong2011 2011-08-19
  • 打赏
  • 举报
回复
还有人没有啊

62,614

社区成员

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

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