Alle Einträge einer JList mittels JPopupMenu selektieren

Alex08

Grünschnabel
Hallo Leute,

Ich habe ein Problem in einer JList mittels JPopupMenu Eintrag alle Einträge einer JList zu selektieren.

Meine Idee war, eine Klasse zu erstellen die von JPopupMenu abgeleitet ist und mir dort immer die aktuelle JList abzuspeichern wo das Menü aufpoppte. (Ich nutze 4 JLists in meinem Programm die aber alle das gleiche PopupMenu nutzen sollen)

Java:
@Override
	public void mouseReleased(MouseEvent e) {
		if(e.getButton() == MouseEvent.BUTTON3) {
			popupmenu.setCurrentList((JList) e.getSource());
			popupmenu.show(e.getComponent(), e.getX(), e.getY());
		}
	}

Das funktioniert soweit.

Im PopupMenu wollte ich nun im Eintrag "Alles markieren" in der AbstractAction mir die JList holen und dort alle Einträge markieren.

Java:
	        popupmenu = new MyPopupMenu();
		AbstractAction allesMarkieren = new AbstractAction("Alles markieren") { 
			/**
			 * Serial-ID
			 */
			private static final long serialVersionUID = 1L;

			public void actionPerformed( ActionEvent e ) { 
				System.out.println("test");
				System.out.println(e.getSource());
				if(e.getSource() instanceof MyPopupMenu) {
					System.out.println("test");
					Object source = e.getSource();
					MyPopupMenu popupmenu = (MyPopupMenu) source;
					
					//JList holen wo gerade das PopupMenu aufgepoppt ist
					JList list = popupmenu.getCurrentList();
					
					/* Alle Einträge der JList markieren */
				}
			} 
		};

popupmenu.add(allesMarkieren);

Leider erhalte ich hier bei System.out.println(e.getSource()); einfach nicht mein MyPopupMenu sondern JPopupMenu$.

Warum ist das so?

Natürlich gibts beim Cast dann die Exception:

java.lang.ClassCastException: javax.swing.JPopupMenu$1 cannot be cast to alex.gui.MyPopupMenu

Es müsste doch die Referenz zu meinem "MyPopupMenu" zurückgegeben werden weil dort geklickt wurde oder?

Danke für jede hilfe :)
 
Hallo,

ich hab jetzt nicht genau geschaut, was da geschieht, aber da dürfte nie eine Referenz zu deinem PopupMenu zurück kommen, eher die Referenz zu dem MenuItem, welches du angeklickt hast.

MFG

Sascha
 
Zurück