JMenuBar ausblenden

Hallo Leute,
ich habe ein JFrame indem eine MenueBar ist jetzt wollte ich fragen ob man die MenueBar per Tastendruck ausblenden bzw. einblenden kann ? Habe bereits ein Code erstellt der per Tastenkombination JFrames einblendet.

        KeyStroke F10 = KeyStroke.getKeyStroke(KeyEvent.VK_F10, InputEvent.CTRL_MASK);
        option.setAccelerator(F10);
        option.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent actionEvent) {
               option o = new option();
                o.setVisible(false);
            }
        });
    }```

wie wäre es denn mit Merken des Menüs in einer Variable und setMenuBar(null oder diese Variable im Wechsel)

Ja, man kann beim Tastendruck die JMenuBar einfach mit setVisible ein- und ausblenden.

PS.: Soll der Code uns etwas sagen?

danke erstmal für die schnelle antwort :slight_smile:
leider funktioniert es nicht

            menuebar.setAccelerator(F2);
            menuebar.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent actionEvent) {
                menuebar al = new menuebar();
                al.setVisible(false);
            }
        });```

was mach ich falsch ?

Der Code in Zeile 6 und 7 ist eigentlich nutzlos. Hier wird ein Objekt vom Typ menuebar (Klassennamen schreibt man groß und warum nicht JMenuBar()) erzeugt und unsichtbar gesetzt. Aber nirgends verwendet. Das Objekt wird nach ausführen der actionPerformed Methode vom GC wieder “entsorgt”.

Ist “menuebar” in Zeile 2 eine Variablenbezeichner oder die in Zeile 6 verwendete Klasse?

Moin,

das könnte sein :stuck_out_tongue_winking_eye:

wie wäre es denn so??

KeyStroke F2 = KeyStroke.getKeyStroke(KeyEvent.VK_F2, InputEvent.CTRL_MASK);
menuebar.setAccelerator(F2);
menuebar.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent actionEvent) 
{
    menuebar.setVisible(false);
}
);

Gruß
Klaus

Hallo Klaus
danke für die schnelle Antwort und für den guten Lösungsvorschlag aber leider zeigt er mir an Cannot find symbol :frowning:

Moin,

hmm, die beiden Zeilen kamen nun aber aus DEINEM Code-Beispiel ganz am Anfang … :rolleyes:
Leider wird in Deinem Bild ja auch ein Teil des Codes verdeckt :confused:

Ich wollte eigentlich auch nur auf diese Anpassung im actionPerformed hinweisen:

@Override
public void actionPerformed(ActionEvent actionEvent) 
{
    menubar.setVisible(false);  // KEIN neues Objekt !!!
}

Gruß
Klaus

Weil es sich bei menuebar höchstwahrscheinlich um eine lokale Variable handelt. Entweder diese final oder als Instanzvariable deklarieren.

Wo erstellst du denn die menuebar?

Und wenn wir schon dabei sind, variablennamen immer klein (camelCase) und Klassennamen Groß (CamelCase).

die Fehlermeldungen betreffen doch ganz andere Methoden,
eine MenuBar selber kann keinen ActionListener haben und keinen Accelerator, was immer das sein soll,
nach API bzw. bei dir hoffentlich schon längst bekannt eine Methode von JMenu/ JMenuItem

nicht wild Befehle hin und her schmeißen, sondern überlegen, wer ist da, wer soll was machen,
was bringt dir ein ActionListener in einer MenuBar, wo soll man da klicken?
alles erstmal vorstellen