鼠标一次点击,会触发多次事件的。比如
onMouseDown, OnMouseUp,OnClick。具体的你自己分析吧。建议你用 Mouse事件处理,比如如下的代码package test;import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;import javax.swing.BorderFactory;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;public class Test extends JFrame implements ListSelectionListener {
private JTextArea answerfield = new JTextArea("你选择的是");
private JList noteList = new JList(); public Test() {
super(" 通讯录");
add(answerfield, BorderLayout.NORTH);
add(new JScrollPane(noteList), BorderLayout.CENTER);
noteList.addListSelectionListener(this);
DefaultListModel model = new DefaultListModel();
noteList.setModel(model);
// 设置model后,可以直接通过model来操作元素 model相当于一个Vector
// BorderFactory可以用来产生各种个性化的border
// 设定列表边框
noteList.setBorder(BorderFactory.createTitledBorder("选择你喜欢的数字"));
// 设定列表框选择模式
noteList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
// 设定列表框显示元素数目
noteList.setVisibleRowCount(10);
// 设定每个元素所占的高度
noteList.setFixedCellHeight(20);
// 为列表框增加选择监听器
noteList.addListSelectionListener(this);
noteList.addMouseListener(mouseListener);
// 通过model来增加30个元素
for (int element = 0; element < 30; element++) {
model.addElement(" 第 " + element + " 项 ");
}
// 为整个JFrame增加关闭监听接口
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
System.exit(0);
}
});
// 设置窗口大小
setSize(200, 300);
// 使窗口可见
setVisible(true);
} MouseListener mouseListener = new MouseAdapter() {
public void mouseClicked(MouseEvent mouseEvent) {
JList list = (JList) mouseEvent.getSource();
Object[] selectedvalues = list.getSelectedValues();
System.out.println(selectedvalues.length);
for (int i = 0; i < selectedvalues.length; i++) {
answerfield.setText(answerfield.getText() + selectedvalues[i] + "|");
}
}
}; public void valueChanged(ListSelectionEvent e) {
} public static void main(String[] args) {
new Test();
}
}