2017-11-27 7 views
0

Ich habe einige Probleme mit diesem Code. Meine actionListeners funktionieren nicht, wenn ich auf Menüpunkte klicke. Ich denke, es gibt ein Problem im Code, wo ich versucht habe, es zu kündigen (**). Ich brauche Menü auf der linken Seite der App, speziell so. Ich konnte es selbst nicht schreiben, also habe ich dieses Beispiel von der Java GUI benutzt und bearbeitet. Wichtig zu sagen ist, dass Gegenstände ihre Anwesenheit nicht zeigen, wenn ich die Maus über sie bewege, sie sind wie normaler Text. Hast du irgendwelche Ratschläge, was ich tun sollte, um mein Ergebnis zu erhalten?ActionListeners funktionieren nicht in JMenuBar

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 


public class MainSite implements ActionListener 
{ 

    private JMenuItem menu1 = new JMenuItem("menu 1"); 
    private JMenuItem menu2 = new JMenuItem("menu 2"); 
    private JMenuItem menu3 = new JMenuItem("menu 3"); 
    private JMenuItem menu4 = new JMenuItem("menu 4"); 

    public JMenuBar createMenuBar() 
    { 
     JMenuBar menuBar = new JMenuBar(); 

     menuBar.setLayout(new BoxLayout(menuBar, BoxLayout.PAGE_AXIS)); 
     menuBar.add(menu1); 
     menuBar.add(menu2); 
     menuBar.add(menu3); 
     menuBar.add(menu4); 
     menuBar.setBorder(BorderFactory.createMatteBorder(0,0,0,1, 
                  Color.BLACK)); 
     return menuBar; 
    } 

    **private static void createAndShowGUI() 
    { 

     JFrame F = new JFrame("App"); 
     F.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     //Create and set up the content pane. 
     MainSite demo = new MainSite(); 
     Container contentPane = F.getContentPane(); 
     contentPane.setBackground(Color.WHITE); 
     contentPane.add(demo.createMenuBar(), 
         BorderLayout.LINE_START); 


     F.setSize(640,420); 
     F.setVisible(true); 
    } 

    public static void main(String[] args) 
    { 
     //Schedule a job for the event-dispatching thread: 
     //creating and showing this application's GUI. 
     javax.swing.SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       createAndShowGUI(); 
      } 
     }); 
    }** 

    @Override 
    public void actionPerformed(ActionEvent E) { 

     if(E.getSource() == menu1) 
     { 
      System.out.println("gnskfs"); 
     } 

     if(E.getSource() == menu2) 
     { 
      System.out.println("gsdfogjs"); 
     } 

     if(E.getSource() == menu3) 
     { 
      System.out.println("gfsjdkljgs"); 
     } 

     if(E.getSource() == menu4) 
     { 
      System.out.println("hfsdajhg"); 
     } 
    } 
} 

Antwort

0

Sie fügen Sie nicht die Action zu den Menüpunkten:

menu1.addActionListener(this): 
... 

Auch sollte die Menüleiste nicht auf den Inhalt Panel hinzugefügt werden. In dem für die Menüleiste reservierten Rahmen befindet sich ein spezieller Bereich. Verwenden Sie die setJMenuBar(...) Methode, um dem Rahmen eine Menüleiste hinzuzufügen.

Lesen Sie den Abschnitt aus dem Swing-Tutorial auf How to Use Menus für Arbeitsbeispiele, um loszulegen.

+0

Ich übersehe das, weshalb sie nicht funktionierten, danke – Dave