2017-11-27 8 views
0

このコードでいくつか問題があります。メニュー項目をクリックすると、私のactionListenerは機能しません。コードに問題があると思いますが、ここでそれを大胆にしようとしました(**)。私は、特にこのような、アプリの左側にメニューが必要です。自分で書くことはできませんでしたので、この例をJava GUIから使用して編集しました。重要なことは、アイテムがマウスにマウスを乗せているときにアイテムがその存在を示していないということです。通常のテキストのようです。私の結果を得るために何をすべきかアドバイスがありますか?ActionListenersが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"); 
     } 
    } 
} 

答えて

0

あなたは、メニュー項目にActionListenerを追加しないでください:

menu1.addActionListener(this): 
... 

はまた、メニューバーには、コンテンツパネルに追加しないでください。メニューバーのために予約されたフレームに特別な領域があります。 setJMenuBar(...)メソッドを使用して、メニューバーをフレームに追加します。

開始するための実際の例については、How to Use MenusのSwingチュートリアルのセクションをお読みください。

+0

私はそれを見落とします、なぜ彼らは働いていなかったのです、ありがとう – Dave

関連する問題