Ich versuche, eine Funktion aufzurufen, wenn ein Benutzer (mit der Maus) auf ein Element in einer JComboBox klickt; Ich möchte jedoch nicht, dass dieses Ereignis für Tastaturereignisse ausgelöst wird. Ich möchte nur, dass es für einen Klick auf eine bestimmte Zelle des Dropdownfensters ausgelöst wird (ich weiß über addActionListener und addItemListener, aber diese werden für mehr Ereignisse ausgelöst, als ich möchte).JComboBox mouseClicked auf Zelle
EDIT: Ich hätte angegeben, dass mouseClicked auch nicht funktioniert - keine Ereignisse scheinen abgefeuert werden (aber sie waren an einem Punkt, aber wenn das passierte, feuern sie auch für Klicks auf das Textfeld), aber Ich dachte, das sei vom Titel ausgegangen.
Ich habe auch versucht die Lösung hier gegeben (auch nicht funktioniert): Editable JCombobox mouseclicked event not working
EDIT2: ich folgendes versucht, aber immer noch keine Ausgabe auf Klick:
try {
Field popupInBasicComboBoxUI = BasicComboBoxUI.class.getDeclaredField("popup");
popupInBasicComboBoxUI.setAccessible(true);
BasicComboPopup popup = (BasicComboPopup)popupInBasicComboBoxUI.get(attachedCB.getUI());
Field scrollerInBasicComboPopup = BasicComboPopup.class.getDeclaredField("scroller");
scrollerInBasicComboPopup.setAccessible(true);
JScrollPane scroller = (JScrollPane)scrollerInBasicComboPopup.get(popup);
scroller.getViewport().getView().addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
System.out.println("nope");
}
});
}
catch (IllegalAccessException e) {
e.printStackTrace();
}
catch (NoSuchFieldException e) {
e.printStackTrace();
}
Sie müssen die mouselistener zum Popup nicht die JComboBox hinzuzufügen, wie das Beispiel hier heißt es: http://engin-tekin.blogspot.com/2009/10/hrefhttpkfd.html Haben Sie versucht, diese ein und es hat nicht funktioniert? Wenn ja, wo benutzt du einen anderen LAF? – Jayfray
Siehe EDIT2, hat nicht funktioniert :( – user235236
Versuchen Sie, den Listener zu der JList von popup.getList() – Jayfray