JMenuItem-Shortcut WENN Menüleiste verborgen ist

k3ltis

Mitglied
Hallo,

folgendes Problem:
Ich habe meiner Menüleiste per setAccelerator-Methode Shortcuts zugewiesen.
Einer davon lässt die Menüleiste verschwinden.

Java:
JMenuItem hideMenu = new JMenuItem("Menüleiste verbergen");
		hideMenu.setAccelerator(KeyStroke.getKeyStroke('M', InputEvent.CTRL_DOWN_MASK));
		hideMenu.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				if(menuBar.isVisible()){
					setVisibilityOfMenuBar(false);
				}else{
					setVisibilityOfMenuBar(true);
				}
			}
		});
		extra.add(hideMenu);

//...

public void setVisibilityOfMenuBar(boolean bool){
		menuBar.setVisible(bool);
	}

Ich möchte die Leiste mit dem gleichen Shortcut wieder reinholen... ist das möglich ohne eigens einen Keylistener dafür zu implementieren?

Grüße
K3ltis
 
Danke für den Hinweis.

Ich kann mir jedoch kaum vorstellen, dass diese KeyBindings der einzige Lösungsweg für dieses Problem sind. Der Code war bisher nämlich extrem übersichtlich... mit diesem Keybinding muss man gleich alle Methoden von Action überschreiben.

Der Spaß sieht dann so aus:

Java:
		hideMenu.getInputMap().put(KeyStroke.getKeyStroke("F2"),
                "doSomething");
		hideMenu.getActionMap().put("doSomething",
                 new Action() {
					
					@Override
					public void actionPerformed(ActionEvent arg0) {
						// TODO Auto-generated method stub
						
					}
					
					@Override
					public void setEnabled(boolean arg0) {
						// TODO Auto-generated method stub
						
					}
					
					@Override
					public void removePropertyChangeListener(PropertyChangeListener arg0) {
						// TODO Auto-generated method stub
						
					}
					
					@Override
					public void putValue(String arg0, Object arg1) {
						// TODO Auto-generated method stub
						
					}
					
					@Override
					public boolean isEnabled() {
						// TODO Auto-generated method stub
						return false;
					}
					
					@Override
					public Object getValue(String arg0) {
						// TODO Auto-generated method stub
						return null;
					}
					
					@Override
					public void addPropertyChangeListener(PropertyChangeListener arg0) {
						// TODO Auto-generated method stub
						
					}
				});


Es muss doch eine Möglichkeit geben eine Komponenten mit "setVisible(boolean)" unsichtbar zu machen und trozdzdem den accellerator beizubehalten... ich meine - die Komponenten sind ja nicht entfernt worden...!?
 
Zuletzt bearbeitet:

Zurück
Oben