einfaches menü erstellen

moe_joe

Mitglied
Ich habe vor für mein Hangman-programm ein einfaches menü zu erstellen mit folgenden auswahlmöglichkeiten:

Datei
-Spiel neu starten
-Beenden
Hilfe
-Spielregeln
Code:
    	  {
    		     MenuBar hauptMenue = new MenuBar();
    		     Menu menue1 = new Menu("datei");
    		     Menu menue2 = new Menu("hilfe");
    		     menue1.add("Spiel neustarten");
    		     menue1.add("Beenden");
    		     menue2.add("Spielregeln");
    		     hauptMenue.add(menue1);
    		     hauptMenue.add(menue2);
    		     hauptMenue.setHelpMenu(menue2);
    		     setMenuBar(hauptMenue);
    		     menue1.addActionListener((ActionListener) this);
    		     addWindowListener(this);
    		   }
    	  public void actionPerformed(ActionEvent evt)
    	  {
    	     if (evt.getSource() instanceof MenuItem)
    	    {
    	       String menuAdd = evt.getActionCommand();
    	       if (menuAdd == "beenden") System.exit(0);
    	     }
    	   }
kann man das so machen?

mfg moe_joe
 
Hallo,

ich verstehe nicht warum du das machst
Code:
menue1.addActionListener((ActionListener) this);
, aber grundsätzlich kann man das so machen.

Warum postest du das hier und fragst ob man das so machen kann. Probier es doch einfach aus und wenn es funktioniert kann man es so machen. Wenn es nicht funktioniert, musst du halt den Fehler suchen. Wenn du diese nicht findest, dann kannst du hier posten.
Das ist nicht böse gemeint, aber wenn jeder fragen würde, ob man das so lösen kann wie er es gelöst hat, dann ist das Forum bald mit Themen voll, die meiner Meinung nach unnötig wären.

MFG

zEriX
 
Vielleicht wollte er nur wissen ob es einen besseren/ effizienteren weg gibt :D

@moe_joe
Du kannst es ja erstmal so machen wie du denkst, wenn alles funktioniert, kannst du es immer noch perfektionieren :D
 
mimij85 hat gesagt.:
Vielleicht wollte er nur wissen ob es einen besseren/ effizienteren weg gibt

Das ist mir schon klar. Aber wie gesagt, wenn das jeder so machen würde, wäre das Forum sehr schnell mit diesen Themen überfüllt und die "richtigen" Probleme würden vernachlässigt. Wie gesagt, das ist ja auch nicht böse gemeint.

MFG

zEriX
 
mein problem ist, ich weis nich wo ich bei mir das menü vereinbaren muss. es muss ja irgendwo meinem fenster das menü hinzgefügt werden.

Code:
 private static void initializeNewWindow(){
    JFrame frame= new JFrame();       // neues Fenster
    	        frame.addWindowListener(new WindowAdapter() {   // WindowListener hinzufügen
    	            public void windowClosing(WindowEvent e) {  // wenn auf X geklickt:
    	                System.out.println();
    	                System.exit(0);       // Programm beenden.
    	            }
    	        });
    	          	        
    	        frame.setLayout(new BorderLayout());
    	        Panel buttonPanel = new Panel();
    	        buttonPanel.setLayout(new FlowLayout());
    	        buttonPanel.setBackground(Color.black);

    	        final JFrame f = frame;
    	        Button button1 = new Button("Nochmal");
    	                       button1.setPreferredSize(new Dimension(80,20));
    	                       button1.addActionListener(new ActionListener() {
    	                       public void actionPerformed(ActionEvent arg0) {
    	                           System.out.print("Nochmal...");
    	                           f.dispose();
                                           initializeNewWindow();
    	                           }
    	      });
    	        Button button2 = new Button("Beenden");
    	        button2.setPreferredSize(new Dimension(80,20));
    	        button2.addActionListener(new ActionListener() {
    	            public void actionPerformed(ActionEvent arg0) {
    	            System.out.print("Bis zum nächsten mal...");
    	            System.exit(0); 
    	            }
    	      });
    	       
    	        buttonPanel.add(button1);
    	        buttonPanel.add(button2);
    	       
    	        frame.add(buttonPanel,BorderLayout.SOUTH);
    	       
    	        Hangman panel = new Hangman();
    	        frame.add(panel,BorderLayout.CENTER);
    	       
    	        frame.setTitle(".:Hangman:.");  // Titel setzen
    	        frame.setSize(WND_B, WND_H);   // Größe setzen
    	        frame.setBackground(Color.black);
    	        frame.setVisible(true);                  // auf den Bildschirm
    	        panel.requestFocusInWindow();
    	        {
    	            MenuBar hauptMenue = new MenuBar();
    	            Menu menue1 = new Menu("datei");
    	            Menu menue2 = new Menu("hilfe");
    	            menue1.add("Spiel neu starten");
    	            menue1.add("Beenden");
    	            menue2.add("Spielregeln");
    	            hauptMenue.add(menue1);
    	            hauptMenue.setHelpMenu(menue2);
    	            setMenuBar(hauptMenue);
    	            menue1.addActionListener(this);
    	            addWindowListener(this);
    	          } 
    	        public void actionPerformed(ActionEvent evt)
    	        {
    	           if (evt.getSource() instanceof MenuItem)
    	          {
    	             String menuAdd = evt.getActionCommand();
    	             if (menuAdd == "beenden") System.exit(0);
    	           }
    	         }
 
Was mir auffällt ist, dass du Swing und AWT vermischst. Du solltest entweder AWT benutzen oder Swing. Alle Swing-Componenten beginnen mit einem J (Beispiel MenuBar: Awt -> MenuBar, Swing -> JMenuBar).

Es wird nicht angezeigt, weil du es deinem Frame nicht hinzufügst.
Code:
frame.setJMenuBar();


Hättest du aber mal bei google gesucht, hättest du das sicherlich auch sehr schnell gefunden, wie man ein JMenu erstellt und dem Fenster hinzufügt.


MFG

zEriX
 
Ich verstehe schon. Ich weiß aber auch, dass es nichts bringt, wenn dir immer jemand den fertigen Quelltext gibt, bzw dir sagt, wo man es einbauen muss. Bei komplizierten Sachen ok, aber dir fehlt nur ein Methodenaufruf.

MFG

zEriX
 
ich will ja nich immer den kompletten quellcode haben... aber wenn du sagst dir fehlt nur ein Methodenaufruf, das kann ich ja auch nich riechen.
 

Neue Beiträge

Zurück