2012-12-13 46 views
0

任何人都可以知道爲什麼當我點擊我的Gui中的打開按鈕時,OpenMenuListener類不會發送反饋?擦除按鈕雖然工作。它給我一個反饋。我很憔悴。Java ActionListener不聽事件

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


public class DrawingApplication extends JFrame { 

    JComponent drawingArea; 

    class EraseButtonListener implements ActionListener { 
     public void actionPerformed(ActionEvent e) { 
      System.out.println("Clicked erase"); 
     } 
    } 

    class OpenMenuListener implements ActionListener{ 
     public void actionPerformed(ActionEvent e) { 
      System.out.println("Clicked open"); 
    } 
    } 
     public DrawingApplication() { 
     JPanel frame = new JPanel(); 
     add(frame); 
     // panel1.add(new JButton(Figuur),BorderLayout.CENTER); 

     drawingArea = new JLabel(); 
     // label1.add(drawingArea); 
     frame.add(drawingArea); 

     // Creates a menubar for a JFrame 
     JMenuBar menuBar = new JMenuBar(); 
     // Add the menubar to the frame 
     setJMenuBar(menuBar); 
     JMenu fileMenu = new JMenu("File"); 
     menuBar.add(fileMenu); 


     JMenu open = new JMenu("Open"); 
     fileMenu.add(open); 
     fileMenu.addSeparator(); 
     JMenu save = new JMenu("Save"); 
     fileMenu.add(save); 
     fileMenu.addSeparator(); 
     JMenu close =new JMenu("Close"); 
     fileMenu.add(close); 
     JMenu helpMenu = new JMenu("Help"); 

     menuBar.add(helpMenu); 
     helpMenu.add(new JMenu("Info")); 

     JPanel panel2 = new JPanel(); 
     add(BorderLayout.SOUTH, frame); 
     frame.add(new JLabel("figuurkeuze")); 
     frame.add(panel2); 
     setVisible(true); 

     JRadioButton rectButton = new JRadioButton("Rectangle"); 
     JRadioButton triangleButton = new JRadioButton("Triangle"); 
     JRadioButton circleButton = new JRadioButton("Circle"); 
     frame.add(rectButton); 
     frame.add(triangleButton); 
     frame.add(circleButton); 

     JButton erase = new JButton("Erase"); 
     frame.add(erase); 

     EraseButtonListener eraselistener = new EraseButtonListener(); 
     erase.addActionListener(eraselistener); 

     OpenMenuListener openMenuListener = new OpenMenuListener(); 
     open.addActionListener(openMenuListener); 



    } 

    public static void main(String[] args) { 

     DrawingApplication frame = new DrawingApplication(); 
     frame.setTitle("My prgram"); 
     frame.setSize(400, 300); 

     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
     frame.setDefaultCloseOperation(EXIT_ON_CLOSE); 

    } 

} 
+0

''當我點擊我的Gui中的打開按鈕時不發送反饋'' - 在上面的代碼中沒有看到打開的」按鈕「,所以您的問題沒有意義。 –

+1

這不會編譯 - 您缺少java.awt.event.ActionListener的導入。請使用SSCCE:http://sscce.org/ – amphibient

+0

當我運行它時,擦除按鈕溢出幀 – amphibient

回答

0

看來名稱混淆的問題,你的監聽器添加到被宣佈爲JMenuItemopen變量,所以要添加的ActionListener菜單項而不是一個按鈕(你永遠聲明因爲任何地方都沒有JButton open = new JButton("open"))。 「

+0

謝謝。事實上,我應該instanciate我的對象作爲MenuItem而不是Jmenu。謝謝 –