Wie kann man bei einer JComboBox feststellen, ob ein Eintrag mit rechts oder links angeklickt wurde???
Hab schon ActionListener und MouseListener auf
-JComboBox.add…Listener()
-JComboBox.getEditor().addActionListener()
-JComboBox.getEditor().getEditorComponent.add…Listener()
Wie kann man bei einer JComboBox feststellen, ob ein Eintrag
mit rechts oder links angeklickt wurde???
Hab schon ActionListener und MouseListener auf
-JComboBox.add…Listener()
-JComboBox.getEditor().addActionListener()
-JComboBox.getEditor().getEditorComponent.add…Listener()
Das mit dem MouseListener war schon mal der richtige Ansatz, der MouseListener wird durch ein MouseEvent angesprochen, mit der Methode
MouseEvent.getModifiers();
wird ein Integerwert zurückgegeben, der im Fall eines Klicks mit der linken Maustaste dem Wert
MouseEvent.BUTTON1_MASK
entspricht, bei der rechten Maustaste entspricht der Wert
MouseEvent.BUTTON3_MASK (oder BUTTON2_MASK , bin mir nicht mehr ganz sicher).
Das ganze sieht dann in etwa so aus:
JComboBox comboBox = new JComboBox();
comboBox.addMouseListener( new MouseAdapter{
public void mouseClicked(MouseEvent e)
{
if(e.getModifiers() == MouseListener.BUTTON1_MASK)
// Linke Maustaste
else if(e.getModifiers() == MouseListener.BUTTON2_MASK)
// mittlere Taste wenn ich mich recht erinnere
else if(e.getModifiers() == MouseListener.BUTTON3_MASK)
// rechte Maustaste
}
}
Aber so ähnlich hab ich das schon versucht, aber wenn ich der ComboBox einen MouseListener hinzufüge, wird er nicht angesprochen. Die Methode MouseClicked wird nicht aufgerufen! Wenn ich den MouseListener an ComboBox.getEditor().getEditorComponent() hinhänge, wird dir Methode aufgerufen, wenn ich oben in die Combobox klicke. Nicht aber im Popup-Menü. Und das auch nur wenn Editable auf true gesetzt ist.
Hab dein Beispiel übernommen und etwas verändert, weil es so nicht lief. Vielleicht hab ich ja was falsches verändert?
nach new MouseAdapter muß () stehen?
die Variablen BUTTON1_MASK usw. sind Bestandteil der Klasse MouseEvent, nicht MouseListener?
Bei den abschließenden Klammern zum Schluß muß der Strichpunkt hinten hin }); ?
So hat sichs zumindest Compilieren lassen aber gefunzt hats nicht
Gruß
Jochen
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]