У меня проблема с моими двумя компонентами JList.
Я создал и разместил на JFrame два компонента JList. Я добавил listSelectionListeners к ним обоим, которые должны отменить выбор другого JList следующим образом:
(редактировать: сделать по запросу автономный образец)
public class JListIssue {
public static void main(String[] args) {
JFrame frame = new JFrame();
JPanel mainPanel = new JPanel();
frame.setContentPane(mainPanel);
final JList jList1 = new JList();
mainPanel.add(jList1);
final JList jList2 = new JList();
mainPanel.add(jList2);
// Setting up models for both JList components to display example values
jList1.setModel(new AbstractListModel() {
String[] items = {"Item 1", "Item 2", "Item 3"};
public int getSize() { return items.length; }
public Object getElementAt(int i) { return items[i]; }
});
jList2.setModel(new AbstractListModel() {
String[] items = {"Item 1", "Item 2", "Item 3"};
public int getSize() { return items.length; }
public Object getElementAt(int i) { return items[i]; }
});
// Adding listeners
jList1.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
jList2.clearSelection();
}
});
jList2.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
jList1.clearSelection();
}
});
frame.pack();
frame.setVisible(true);
}
}
Однако, когда он отменяет выбор одного из этих двух списков, я должен щелкнуть два раза, чтобы сделать новый выбор. Поскольку первый раз, когда я щелкаю по нему, он как бы ограничивает элемент, который я хочу выделить, он на самом деле не выбирает его (подтверждается listSelectionListener), поэтому мне нужно либо двигать мышь, удерживая левую кнопку мыши во время первого выбора, либо щелкнуть второй раз а затем он фактически выбирает элемент.
Я нахожу это поведение странным, и я не хочу, чтобы оно вело себя так. Любое предложение?