JList - Elemente mit rechter Maustaste wählen

  • Themenstarter Themenstarter 11Ben11
  • Beginndatum Beginndatum
1

11Ben11

Gast
Hallo,
ich möchte gerne die Elemente eine JList mit der rechten Maustaste auswählen, statt mit der linken. Habe bisher jedoch nichts passendes gefunden (oder einfach übersehen).
Wie kann ich es erreichen?

Danke im voraus.
 
Java:
JList list = new JList();
list.addMouseListener(new MouseAdapter() {
    public void mouseClicked(MouseEvent evt) {
        System.out.println(evt.getButton());
    }
});

Code:
evt.getButton
liefert entweder Linksklick, Scrollradklick oder Rechtsklick.
 
Danke für die Antwort.
Die Methode getButton() habe ich auch bereits verwendet, um ein Popupmenü zu erzeugen, mit dem man den gewählten Eintrag entfernen kann. Das funktioniert auch – es muss vorher nur das Listenelement mit Linksklick gewählt werden. Bei Rechtsklick wird ja nichts ausgewählt.

Muss ich dazu irgendwie mit setSelectedValue() arbeiten?
 
Hier der Code mit MouseListener.
Java:
liste.addMouseListener(new MouseAdapter() {
        	public void mouseClicked(MouseEvent me) {
        		if (me.getButton() == MouseEvent.BUTTON3 && !model.isEmpty()) {
        			showMenu(me);
        		}
            }
        });

Die Methode welche aufgerufen beim Rechtsklick aufgerufen wird.
Java:
public void showMenu(MouseEvent me) {
		JPopupMenu menu = new JPopupMenu();
    	JMenuItem delItem = new JMenuItem("entfernen");
    	
    	menu.add(delItem);									
    	if (liste.getSelectedValue() == null) {		
    		delItem.setEnabled(false);						
    	}
    	menu.show(liste, me.getX() + 5, me.getY() - 5);    	
    	delItem.addActionListener(aktion);
	}
 
Dass das ausgewählte Element irgendwie „selbst“ gesetzt werden muss, dachte ich mir schon.
Habe nun folgenden Code in die showMenu(MouseEvent me)-Methode eingefügt.
Java:
int index = zutatenHinzu.locationToIndex(me.getPoint());
zutatenHinzu.setSelectedIndex(index);
Oder ist es vom Programmierstil besser, es direkt in mouseClicked(MouseEvent me) zu schreiben?
 

Zurück
Oben