JList的ListSelectionEvent的几个问题请教

在做一个类似qq的小东西,直接上图。


面板中心的是数据库取得的好友列表,做到 JList = friendsList 里面去,然后对这个列表加监听,addListSelectionListener,这个监听很奇怪,在点击鼠标和释放点击的时候都会响应一次,但是问题是,其中的一个被点击了,只有在不点击别的地方的情况下,再次点击的话是不响应的,请问这样的情况要怎么处理,还有这里的双击某个用户的话要怎么添加响应。有没有大神能小弟一把,感激涕零~~   要是有交流的可以直接加QQ 345451003

为了方便理解简单说明一下:

好友列表取出的时候是一个List,把这个List逐一添加到自定义的一个Row这个类中,然后用 Vector<Row> rows = new Vector<Row>() 的方法吧数据添加的JList中的

这里是自定义的一个Row

	static public class Row extends JDesktopPane {
		public JLabel icon;
		public JLabel username;
		public JLabel name;
		public JLabel email;
		public User u;

		public Row(User user) {
			super();
			u = user;
			FlowLayout fl = new FlowLayout();
			fl.setAlignment(FlowLayout.LEFT);
			this.setSize(280, 1);
			this.setLayout(fl);

			icon = new JLabel();
			icon.setIcon(new ImageIcon("images/panda (2).png"));
			username = new JLabel(user.getUserName());
			name = new JLabel(user.getName());
			email = new JLabel(user.getEmail());

			add(icon);
			add(username);
			add(name);
			add(email);

		}
		public User getUser() {
			return this.u;
		}
	}


往 JList 中添加数据的方法

		Vector<Row> rows = new Vector<Row>();
		try {
			java.util.ArrayList<User> userList = (ArrayList<pandaChat.entity.User>) dbProcess.getAllUserslist();
			for (int j = 0; j < userList.size(); j++) {
				User u = userList.get(j);
				Row r = new Row(u);		
				r.setBackground(Color.ORANGE);
				r.setBorder(BorderFactory.createLineBorder(Color.BLACK));
				rows.add(r);
			}
		} catch (SQLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}

这里是对 JList friendsList的监听

        friendsList.addListSelectionListener(new ListSelectionListener() {
            @Override
            public void valueChanged(ListSelectionEvent e) {
                // TODO Auto-generated method stub
                
                if (e.getValueIsAdjusting()) {
                    // 鼠标点击在点的时刻
                    
                    java.util.ArrayList<Row> selecteditem = (ArrayList<Row>) friendsList.getSelectedValuesList();
                    Row r1 = selecteditem.get(0);
                    r1.setBackground(Color.GREEN);
                    User u = r1.getUser();
                    User.printUser(u);     //这里是自己定义的检查 user 的一个输出
                    
                } else {
                    // 鼠标点击释放的时刻

                    java.util.ArrayList<Row> selecteditem = (ArrayList<Row>) friendsList.getSelectedValuesList();
                    
                    Row r2 = selecteditem.get(0);
                    r2.setBackground(Color.ORANGE);
                }
            }

        });

Row


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值