JList的ListSelectionEvent的几个问题请教
2015-08-21 21:41
531 查看
在做一个类似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 中添加数据的方法
这里是对 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
面板中心的是数据库取得的好友列表,做到 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
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统