Code
class BasicComboPopup2 extends BasicComboPopup {
private Handler2 handler2;
@Override
public void uninstallingUI() {
super.uninstallingUI();
handler2 = null;
}
public BasicComboPopup2(JComboBox combo) {
super(combo);
}
protected MouseListener createListMouseListener() {
if(handler2==null) handler2 = new Handler2();
return handler2;
}
private class Handler2 implements MouseListener{
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {
if(e.getSource() == list) {
if(list.getModel().getSize() > 0) {
if(!SwingUtilities.isLeftMouseButton(e) || !comboBox.isEnabled()) return; // <-- ins
// JList mouse listener
if(comboBox.getSelectedIndex() == list.getSelectedIndex()) {
comboBox.getEditor().setItem(list.getSelectedValue());
}
comboBox.setSelectedIndex(list.getSelectedIndex());
}
comboBox.setPopupVisible(false);
// workaround for cancelling an edited item (bug 4530953)
if(comboBox.isEditable() && comboBox.getEditor() != null) {
comboBox.configureEditor(comboBox.getEditor(), comboBox.getSelectedItem());
}
}
}
}
}
References
No comments:
Post a Comment