我有充满项目的JList。当我点击一个项目然后点击离开时,该项目仍处于选中状态。我的直觉说这个项目应该被取消。有没有简单的方法来做到这一点?如何在我点击其他地方时取消选择JList?
我想解决这个问题的方法是将鼠标适配器连接到JList,以便每当我单击JList时调用clearSelection()。但是这不会干扰从列表中选择一个项目吗?
我有充满项目的JList。当我点击一个项目然后点击离开时,该项目仍处于选中状态。我的直觉说这个项目应该被取消。有没有简单的方法来做到这一点?如何在我点击其他地方时取消选择JList?
我想解决这个问题的方法是将鼠标适配器连接到JList,以便每当我单击JList时调用clearSelection()。但是这不会干扰从列表中选择一个项目吗?
这是组件的正确行为。添加另一个MouseListener
不会的JList
list.addMouseListener(new MouseAdapter() {
@Override
public void mouseExited(MouseEvent e) {
JList list = (JList) e.getSource();
list.clearSelection();
}
});
没有工作。我点击任何地方,列表中的项目仍处于选中状态。 –
当我使用另一个组件,你的方式工作(如按另一个按钮左右)。但点击任何地方都行不通。正如你所做的那样,我只是附加了一个FocusListener。 –
这个问题没有说明列表是唯一的组件。在这种情况下,添加另一个MouseListener是没有问题的,因为您只是在侦听mouseExited - 鼠标点击仍然可以工作:) – Reimeus
如果您选择列表中的东西,走,列表元素应该保持选择功能造成干扰。如果你想要别的东西,你应该使用FocusListener
事情是这样的:
list.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e) {
JList list = (JList) e.getComponent();
list.clearSelection();
}
});
“我的直觉说,该项目应取消选择”为什么?这是设计的,以便您可以填写表单中要处理的多个不同输入。也就是说,如果你真的想要这样做,你建议的解决方案应该可以工作 – StormeHawke
@StormeHawke我确实希望这样做。 –