我正在向MouseListener
添加JList
,以便在进行右键点击时,我会清除JList
中的选择。但我允许JList
能够处理区间选择。当我选择使用控制按钮并从列表中随机选择一些项目时,MouseEvent
被触发!但是当我使用Shift键进行连续选择时,它可以正常工作!
这是我的代码:
List.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e)
{
JList list = (JList) e.getSource();
if ( SwingUtilities.isRightMouseButton(e) ) {
System.out.println("Boom");
list.clearSelection();
}
}
});
答案 0 :(得分:1)
SSCCEE意味着短,自包含,正确(可编译),示例。您应该创建一个简短示例来演示您的问题。您的实际代码可能很长而且不必显示问题,因此您应该创建小型运行程序。
好的,所以这里是SSCCE,正如预期的那样它的工作正常。让我们知道,当你使用这个例子时,你面临的问题是什么。
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
public class ListDemo extends JFrame{
private DefaultListModel<String> listModel;
private JList<String> list;
private JScrollPane listScrollPane;
public ListDemo(){
listModel = new DefaultListModel<String>();
for(int i = 0; i < 10; i++){
listModel.addElement("Item " + (i + 1));
}
list = new JList<String>(listModel);
list.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent me){
if(SwingUtilities.isRightMouseButton(me)){
list.clearSelection();
}
}
});
listScrollPane = new JScrollPane(list);
getContentPane().add(listScrollPane);
setSize(500, 400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String [] arg){
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new ListDemo().setVisible(true);
}
});
}
}