请教一个关于列表框(JLIST)的问题

baar 2009-11-26 11:04:46
请问如何保持列表框中的元素的唯一性呢?例如,我有两个列表框(好像MSN添加删除联系人的列表框那样)当我点击了“添加”之后,左边被选中的元素就会添加到右边的列表框里面,但是如果右边的列表框已经存在了被选的元素,就不能再添加,请问这个功能怎样实现啊?谢谢~
...全文
178 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
baar 2009-12-10
  • 打赏
  • 举报
回复
的确要重写EQUALS()方法~
villagehead 2009-11-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 mycity21 的回复:]
在点击"添加"后,实现的代码功能:
1.获取左边列表被除数选中的数据.
2.把从左边获取到的数据,一条一条与右边列表的数据作比较,如果存在相同值,则不添加.
[/Quote]

右面数据是存在一个java.util.list里面吧,
如果是的,用List里面的contains方法判断一下有没有就行了,
很方便。
顶多重写一下equals

good luck
mycity21 2009-11-29
  • 打赏
  • 举报
回复
在点击"添加"后,实现的代码功能:
1.获取左边列表被除数选中的数据.
2.把从左边获取到的数据,一条一条与右边列表的数据作比较,如果存在相同值,则不添加.
安小寰 2009-11-27
  • 打赏
  • 举报
回复
这种处理方法最好是左侧和右侧的JList中的元素都使用一个HashMap map或者LinkedList list保存.
1.按钮监听中实现遍历右侧数据结构list
2.在遍历中判定是否存在左侧待添加元素(也就是左侧JList的getSelectedValue());
3.此处设置一个flag = true,在(2)的遍历中若有相同元素则flag=false
4.添加到左侧JList的操作代码以if(flag){}作为判别条件,也就是存在相同元素不进行添加。

刚好这两天帮别人写了段类似代码,我就只贴出ActionListener里面的实现了,如下:

if("转换".equals(((JButton)(e.getSource())).getText())){
boolean flag = true;
boolean execute = true;
Product pro = null;
for(int i=0;i<InfoCreate.inventory.size();i++){
if(productList.getSelectedValue().equals(InfoCreate.inventory.get(i).getName())){
execute = false;
}
}
if(execute){
try{
Integer.parseInt(numText.getText());
}catch(Exception ex){
flag = false;
}
if(flag){
for(int i=0;i<InfoCreate.products.size();i++){
if(InfoCreate.products.get(i).getName().equals(productList.getSelectedValue())){
pro = InfoCreate.products.get(i);
}
}
MaterialsInventory newMater = new MaterialsInventory(InfoCreate.inventory.size()+1,pro.getName(),pro.getDescribe(),Integer.parseInt(numText.getText()));
InfoCreate.inventory.add(newMater);
meterialsListModel.addElement(newMater.getName());
}
}


上面的这段代码是实现我程序里面的“产品”向“原材料”的转换操作,Swing视图表示和你的结构一样,里面的静态变量含义就不解释了.
一头头 2009-11-27
  • 打赏
  • 举报
回复
你写了点什么 拿来先看看

62,621

社区成员

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

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