2012-03-31 15 views
1

私はJMenuを持っていますが、ActionListenerを追加しましたが、Actionリスナーは何もしません。JMenu上のActionListenerが動作しない

mnExitメニューをプログラム(System.exit(0))から終了しようとしていますが、ActionListenerは何もしません。

誰かが私が間違ったことを伝えることはできますか?

import java.io.IOException; 


public class Main { 
private int a; 
private Server s; 
private Client c; 
private JFrame j; 
private static JTextField ipClient; 
private static JTextField hostPort; 
private static JTextField portClient; 
private static JPasswordField passwordClient; 
private static JPasswordField passwordHost; 
/** 
* @param args 
* @wbp.parser.entryPoint 
*/ 
public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    Main start=new Main(); 
    JFrame j=new JFrame("IControl"); 
    j.setSize(new Dimension(448, 291)); 
    j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    j.setSize(700,700); 
    j.getContentPane().setLayout(null); 

    JButton clientButton = new JButton("connect to server"); 
    clientButton.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 
      Client c=new Client("localhost","bbc"); 
     } 
    }); 
    clientButton.setBounds(32, 209, 154, 23); 
    j.getContentPane().add(clientButton); 

    JButton serverButton = new JButton("wait for connection"); 
    serverButton.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 
      Server s=new Server("abc"); 
     } 
    }); 
    serverButton.setBounds(278, 209, 154, 23); 
    j.getContentPane().add(serverButton); 

    ipClient = new JTextField(); 
    ipClient.setBounds(67, 96, 123, 20); 
    j.getContentPane().add(ipClient); 
    ipClient.setColumns(10); 

    hostPort = new JTextField(); 
    hostPort.setBounds(298, 130, 86, 20); 
    j.getContentPane().add(hostPort); 
    hostPort.setColumns(10); 

    JLabel lblIp = new JLabel("IP"); 
    lblIp.setBounds(25, 99, 32, 14); 
    j.getContentPane().add(lblIp); 

    JLabel lblPort = new JLabel("port"); 
    lblPort.setBounds(25, 133, 32, 14); 
    j.getContentPane().add(lblPort); 

    portClient = new JTextField(); 
    portClient.setBounds(67, 130, 86, 20); 
    j.getContentPane().add(portClient); 
    portClient.setColumns(10); 

    passwordClient = new JPasswordField(); 
    passwordClient.setBounds(67, 161, 86, 20); 
    j.getContentPane().add(passwordClient); 

    passwordHost = new JPasswordField(); 
    passwordHost.setBounds(298, 161, 86, 20); 
    j.getContentPane().add(passwordHost); 

    JLabel lblPass = new JLabel("pass"); 
    lblPass.setBounds(32, 158, 32, 14); 
    j.getContentPane().add(lblPass); 



    JMenuBar menuBar = new JMenuBar(); 
    menuBar.setBounds(0, 0, 93, 21); 
    j.getContentPane().add(menuBar); 

    JMenu mnFile = new JMenu("File"); 
    menuBar.add(mnFile); 

    JMenu mnExit = new JMenu("Exit"); 
    mnExit.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 
      System.exit(0); 
     } 
    }); 
    mnFile.add(mnExit); 


    j.setVisible(true); 

// j.pack(); 
} 
/** 
* @wbp.parser.entryPoint 
*/ 
public Main() 
{ 

} 

}

答えて

4

は、あなたが代わりにJMenuItemJMenuを定義するため

JMenu mnExit = new JMenu("Exit"); 

から

JMenuItem mnExit = new JMenuItem("Exit"); 

にコード行を変更する必要がありますが、作成することを忘れないでくださいJMenuを入力してからJMenuItemを入力してくださいチュートリアルについてJMenu/JMenuItem

+3

@ user1272067:うん、mKorbelは正しいです(1+)。また、[メニューチュートリアル](http://docs.oracle.com/javase/tutorial/uiswing/components/menu.html)にすべての説明があるので、それを検討してみてください。その間に、[レイアウトマネージャチュートリアル](http://docs.oracle.com/javase/tutorial/uiswing/layout/index.html)を見て、GUIライフをより簡単にすることができます。 –

+0

ありがとうございます。 – user1272067

+0

お気軽にお手伝いします – mKorbel

関連する問題