Listener

Hi ich benötige mal bitte Eure Hilfe, also ich möchte ein Menü erstellen und mein Problem ist, dass wenn man auf den UnterMenü Punkt(Start) klickt, soll sich erst der UnterMenüPunkt (Lokales Spiel) öffnen...
ABER bei mir öffnet er sich schon wenn ich nur mit der Maus darüber fahre.

Meine Idee war es einen Action Listener zu initialiserieren, aber irgendwie hat sich dann immernoch nichts getan(war evtl auch falsch programmiert). Aber eigentlich geht es doch nicht ohne einen Action Listener oder?

Danke im Vorraus🙂

Java:
public class GameMenu extends JMenuBar {
	private static final long serialVersionUID = -4264316693132737579L;

	
	private JCheckBoxMenuItem menuItemAI;
	GameMenu MenuBar;


	private JMenuItem SubMenu;
	private JMenuItem menuItemL;	//
	
	public GameMenu() {
		createMenuBar();
		
	}


	void createMenuBar() {
		JMenu menuGame = new JMenu("Spiel");	
		menuGame.setMnemonic(KeyEvent.VK_S);	
		add(menuGame);
		menuGame.addSeparator();
		
		SubMenu = new JMenu("Start");					//SubMenu ist ein Menüpunkt mit dem Namen "Start"
		SubMenu.setMnemonic(KeyEvent.VK_S);				//schnellaufruf mit "ALT + S"
		menuGame.add(SubMenu);							//füge dem Menü, "SubMenu" hinzu
	
	

		menuItemL = new JMenuItem("Lokales Spiel");		//"menuItemL" ist ein Menüpunkt mit dem Namen "Lokales Spiel"
		menuItemL.setMnemonic(KeyEvent.VK_L);			//schnellaufruf mit "ALT + L"
	
		SubMenu.add(menuItemL);						//füge "menuItemL" dem SubMenu hinzu
		
		
		menuGame.add(getRestartItem());
		menuGame.add(getEndItem());						//
		menuGame.addSeparator();


		JMenu menuExtras = new JMenu("Extras");
		menuExtras.setMnemonic(KeyEvent.VK_E);
		add(menuExtras);	
	}
	
	

	
	JMenuItem getLokalStartItem() {
		menuItemL = new JMenuItem("Lokales Spiel");		//"menuItemL" ist ein Menüpunkt mit dem Namen "Lokales Spiel"
		menuItemL.setMnemonic(KeyEvent.VK_L);			//schnellaufruf mit "ALT + L"
		menuItemL.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				
			}
		});
		menuItemL.setMnemonic(KeyEvent.VK_L);
		
		return menuItemL;

	}

	public void setResetEnabled(boolean resetEnabled) {

		menuItemL.setEnabled(resetEnabled);		
	}
	
}
 
mein menu hab ich so erstellt

Java:
public class Menubar implements ActionListener{
    
    private JFrame frame;
    
    private boolean progStartB =true;
    private boolean progSaveB =true;
    private boolean progOpenB =true;
    private boolean auswMenuB =true;
    
    
    //M E N Ü
    JMenu auswMenu;
    //Menüpunkte für Programmstart
    JMenuItem progStart, progOpenMess, progOpenTrep, progSave, progNull, progExit;
    //Menüpunkte für die Dateneingabe
    JMenuItem dateneingabeInput, treppenstufenInput;
    //Menüpunkte für die Auswertung
    JMenuItem auswPerlschnur, auswHorizont, auswGrafik;   
    //Menüpunkte für Hilfefunktion
    JMenuItem hilfe, hilfeVersion, hilfeEinlesen;
    
    
    /**
     * Methode zum erstellen der Menüs
     * Erstellen der Menüpunkte und 
     * Initialisierung der Menüunterpunkte mit Name sowie Einbindung in den ActionListener
     * 
     * @return JMenuBar
     */
    public JMenuBar menu(){
        JMenuBar bar =new JMenuBar(); //Menüleiste auf die alle Menüpunkte kommen
        JMenu programmMenu =new JMenu( "Programm"); //Menü "Programm" erstellen
            programmMenu.setMnemonic( 'P'); //Ansprechen des Menüpunktes über Alt+ Markierte Buchstabe
        Icon iHome =new ImageIcon( "icon\\home.gif"); //Icon für den Menüpunkt erstellen
        progStart =new JMenuItem( "Startbildschirm", iHome); //Menüpunkt erstellen
            progStart.addActionListener( this); //Menüpunkt im ActionListener anmelden
            programmMenu.add( progStart); //Menüpunkt im Menü anmelden
            progStart.setAccelerator( // Funktionalität Strg +Buchstabe nach drücken Alt+ Menü
                KeyStroke.getKeyStroke( 'H', InputEvent.CTRL_DOWN_MASK )
              );
            progStart.setEnabled( progStartB);
        Icon iSave =new ImageIcon( "icon\\save_16.png"); //Icon für den Menüpunkt erstellen
        progSave =new JMenuItem( "Speichern", iSave); //Menüpunkt erstellen
            progSave.addActionListener( this); //Menüpunkt im ActionListener anmelden
            programmMenu.add( progSave); //Menüpunkt im Menü anmelden
            progSave.setAccelerator( // Funktionalität Strg +Buchstabe nach drücken Alt+ Menü
                KeyStroke.getKeyStroke( 'S', InputEvent.CTRL_DOWN_MASK )
              );
            progSave.setEnabled( progSaveB);
        Icon iOpen =new ImageIcon( "icon\\open_16.gif"); //Icon für den Menüpunkt erstellen
        progOpenMess =new JMenuItem( "Messwerte laden", iOpen); //Menüpunkt erstellen
            progOpenMess.addActionListener( this); //Menüpunkt im ActionListener anmelden
            programmMenu.add( progOpenMess); //Menüpunkt im Menü anmelden
            progOpenMess.setAccelerator( // Funktionalität Strg +Buchstabe nach drücken Alt+ Menü
                KeyStroke.getKeyStroke( 'O', InputEvent.CTRL_DOWN_MASK )
              );
            progOpenMess.setEnabled( progOpenB);
        progOpenTrep =new JMenuItem( "Treppenstufen laden", iOpen); //Menüpunkt erstellen
            progOpenTrep.addActionListener( this); //Menüpunkt im ActionListener anmelden
            programmMenu.add( progOpenTrep); //Menüpunkt im Menü anmelden
            progOpenTrep.setAccelerator( // Funktionalität Strg +Buchstabe nach drücken Alt+ Menü
                KeyStroke.getKeyStroke( 'T', InputEvent.CTRL_DOWN_MASK )
              );
            progOpenTrep.setEnabled( progOpenB);
        programmMenu.addSeparator();
        Icon iClose =new ImageIcon( "icon\\exit_20.png"); //Icon für den Menüpunkt erstellen
        progExit =new JMenuItem( "Werteeingabe Beenden", iClose); //Menüpunkt erstellen
            progExit.addActionListener( this); //Menüpunkt im ActionListener anmelden
            programmMenu.add( progExit); //Menüpunkt im Menü anmelden
            
        JMenu datInMenu =new JMenu( "Dateneingabe"); // Menü "Dateneingabe" erstellen
        datInMenu.setMnemonic( 'D');
        dateneingabeInput =new JMenuItem( "Messwerte eingeben"); //Menüpunkt erstellen
            dateneingabeInput.addActionListener( this); //Menüpunkt im ActionListener anmelden
            datInMenu.add( dateneingabeInput); //Menüpunkt im Menü anmelden
        treppenstufenInput =new JMenuItem( "Treppenstufen"); //Menüpunkt erstellen
            treppenstufenInput.addActionListener( this); //Menüpunkt im ActionListener anmelden
            datInMenu.add( treppenstufenInput); //Menüpunkt im Menü anmelden
        
        auswMenu =new JMenu( "Auswertung"); //Menü "Auswertung" erstellen
        auswMenu.setMnemonic( 'A'); //Ansprechen des Menüpunktes über Alt+ Markierte Buchstabe
            auswMenu.setEnabled( auswMenuB);
        auswPerlschnur =new JMenuItem( "Perlschnurverfahren"); //Menüpunkt erstellen
            auswPerlschnur.addActionListener( this); //Menüpunkt im ActionListener anmelden
            auswMenu.add( auswPerlschnur); //Menüpunkt im Menü anmelden
        auswHorizont =new JMenuItem( "Horizontenverfahren"); //Menüpunkt erstellen
            auswHorizont.addActionListener( this); //Menüpunkt im ActionListener anmelden
            auswMenu.add( auswHorizont); //Menüpunkt im Menü anmelden
        auswMenu.addSeparator(); //Mehtode zum einfügen einer Trennlinie
        auswGrafik =new JMenuItem( "Grafische Auswertung"); //Menüpunkt erstellen
            auswGrafik.addActionListener( this); //Menüpunkt im ActionListener anmelden
            auswMenu.add( auswGrafik); //Menüpunkt im Menü anmelden
        
        JMenu hilfeMenu =new JMenu( "Hilfe"); //Hilfemenü
        hilfeMenu.setMnemonic( 'H'); //Ansprechen des Menüpunktes über Alt+ Markierte Buchstabe
        Icon iHelp =new ImageIcon( "icon\\Help.png");
        hilfe =new JMenuItem( "Hilfe", iHelp);
            hilfe.addActionListener( this);
            hilfeMenu.add( hilfe);
        Icon iInfo =new ImageIcon( "icon\\info_16.png"); //Icon für den Menüpunkt erstellen
        hilfeVersion =new JMenuItem( "Versionsinfo", iInfo);
            hilfeVersion.addActionListener( this);
            hilfeMenu.add( hilfeVersion);
        hilfeEinlesen =new JMenuItem( "Einlese-Info", iInfo);
            hilfeEinlesen.addActionListener( this);
            hilfeMenu.add( hilfeEinlesen);
            
        bar.add( programmMenu); //Der Menüleiste das Menü "Programm" hinzufügen
        bar.add( datInMenu); //Der Menüleiste das Menü "Dateneingabe" hinzufügen
        bar.add( auswMenu); //Der Menüleiste das Menü "Auswertung" hinzufügen
        bar.add( hilfeMenu); //Hinzufügen eines Hilfemenüs
        return bar;
    }

    

    
    
    @Override
    public void actionPerformed( ActionEvent e){
        Menufunktion menuFunktion =new Menufunktion();
        
        //Programm
        if( e.getSource() ==progStart){ //Startbildschirm - Disable
            menuFunktion.runStartbildschirm( frame);
        } else if( e.getSource() ==progOpenMess){ //Öffnen von Messwerten
            menuFunktion.runOpenMesswerte();
        } else if( e.getSource() ==progOpenTrep){ //Öffnen von Treppenstufenwerten
            menuFunktion.runOpenTreppenstufen();
        } else if( e.getSource() ==progSave){ //Speichern - Disable
            menuFunktion.runSaveMesswerte();
        } else if( e.getSource() ==progExit){ //Beenden
            menuFunktion.runCloseProgramm( frame);
        }
        
        //Probenwerte eingeben 
        else if( e.getSource() ==dateneingabeInput){ //Dateneingabemaske start
            menuFunktion.runEingabeProbenwerte();
            frame.setVisible( false);
        } else if( e.getSource() ==treppenstufenInput){ //Dateneingabemaske start
            menuFunktion.runEingabeTreppenstufenverfahren();
            frame.setVisible( false);
        }
        
        //Auswertung der Probenwerte
        else if( e.getSource() ==auswMenu){ //Berechnung mittels Perlschnurverfahren
            Validierung validierung =new Validierung();
            validierung.validate();
        } else if( e.getSource() ==auswPerlschnur){ //Berechnung mittels Perlschnurverfahren
            menuFunktion.runPerlschnur();
        } else if( e.getSource() ==auswHorizont){ //Berechnung mittels Horizontenverfahren
            menuFunktion.runHorizontenverfahren();
        } else if( e.getSource() ==auswGrafik){ //Grafischeauswertung nach dem Horizontenverfahren
            menuFunktion.runDrawHorizontenverfahren();
        } else if( e.getSource() ==auswGrafik){ //Grafischeauswertung nach dem Perlschnurverfahren
            menuFunktion.runDrawPerlschnurverfahren();
        }
        
        //Hilfestellung
        else if( e.getSource() ==hilfe){ //Große Hilfe
        } else if( e.getSource() ==hilfeVersion){ //Versionsinformationen
            menuFunktion.runHelpVersion();
        } else if( e.getSource() ==hilfeEinlesen){ //Hilfe für das Einlesen von Textdateien
            menuFunktion.runHelpOpenFile();
        } else{}
    }

}
 
Danke für die beiden Antworten, sorry aber mein Englisch ist nicht das Beste...

Ich bin mir nicht sicher was du meinst, aber nicht dass hier oder?

Java:
 public void actionPerformed(ActionEvent e){
}

Das geht ja nur, wenn man Texte ausgeben will oder?
 
Du vermischt hier offenbar zwei verschiedene Themen.
Ein JMenuItem öffnet sich und zeigt seine Untermenüs per default, wenn man mit Maus drüberfährt. Ich empfinde das als sehr angenehm, weil man dann nicht ständig mit der Maus irgendwo draufklicken muss. Das ganze hat nix mit ActionListenern zu tun! Diese kommen dann ins Spiel, wenn man die Aktionen definiert, die beim Klick auf ein JMenuItem (nicht JMenu!) ausgelöst werden sollen!
Danke für die beiden Antworten, sorry aber mein Englisch ist nicht das Beste...

Ich bin mir nicht sicher was du meinst, aber nicht dass hier oder?

Java:
 public void actionPerformed(ActionEvent e){
}

Das geht ja nur, wenn man Texte ausgeben will oder?

Die letzte Bemerkung/Frage ist mir vollkommen unklar. Im Rumpf der actionPerformed-Methode kann jeder beliebige Code stehen.
 
Zuletzt bearbeitet:

Zurück
Oben