4 Stimmen

Warum reagiert mein ChangeListener nur auf JMenu, und nicht auf JMenuItem?

Nun, ich habe ein JMenu und einige JMenuItems darin. Ich möchte, dass mein Programm eine Aktion ausführt, wenn der Zustand von JMenu und JMenuItem auf "ausgewählt" geändert wird. Ich verwende MouseLitener's MouseOver nicht, weil ich möchte, dass der Benutzer auch mit der Tastatur im Menü navigieren kann. Nun, ich habe diesen Listener geschrieben:

class MenuItemListener implements ChangeListener {
    @Override
    public void stateChanged(ChangeEvent arg0) {
        JMenuItem item = (JMenuItem) arg0.getSource();
        if(item.isSelected())
            System.out.println(item.getText()+" pressed!");
    }
}

Wenn ich diesen Listener zu JMenu hinzufüge, funktioniert er richtig, aber wenn ich ihn zu JMenuItem hinzufüge, passiert nichts... Wenn ich die if-Anweisung lösche, so dass der Listener sowohl bei ausgewähltem als auch bei nicht ausgewähltem Menü reagiert, funktioniert er sowohl für JMenu als auch für JMenuItem. Also, wie ich sehe, kann JMenuItem nicht "passieren" isSelected() Test... Aber was kann ein Problem sein? :S

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X