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)
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.
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
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