2013-10-09 36 views
0

我有充满项目的JList。当我点击一个项目然后点击离开时,该项目仍处于选中状态。我的直觉说这个项目应该被取消。有没有简单的方法来做到这一点?如何在我点击其他地方时取消选择JList?

我想解决这个问题的方法是将鼠标适配器连接到JList,以便每当我单击JList时调用clearSelection()。但是这不会干扰从列表中选择一个项目吗?

+0

“我的直觉说,该项目应取消选择”为什么?这是设计的,以便您可以填写表单中要处理的多个不同输入。也就是说,如果你真的想要这样做,你建议的解决方案应该可以工作 – StormeHawke

+0

@StormeHawke我确实希望这样做。 –

回答

1

这是组件的正确行为。添加另一个MouseListener不会的JList

list.addMouseListener(new MouseAdapter() { 

    @Override 
    public void mouseExited(MouseEvent e) { 
     JList list = (JList) e.getSource(); 
     list.clearSelection(); 
    } 
}); 
+0

没有工作。我点击任何地方,列表中的项目仍处于选中状态。 –

+0

当我使用另一个组件,你的方式工作(如按另一个按钮左右)。但点击任何地方都行不通。正如你所做的那样,我只是附加了一个FocusListener。 –

+0

这个问题没有说明列表是唯一的组件。在这种情况下,添加另一个MouseListener是没有问题的,因为您只是在侦听mouseExited - 鼠标点击仍然可以工作:) – Reimeus

0

如果您选择列表中的东西,走,列表元素应该保持选择功能造成干扰。如果你想要别的东西,你应该使用FocusListener

事情是这样的:

list.addFocusListener(new FocusAdapter() { 
    public void focusLost(FocusEvent e) { 
    JList list = (JList) e.getComponent(); 
    list.clearSelection(); 
    } 
}); 
相关问题