我想要使得InerActionListener是内部类,不是用匿名内部类完成。我错在哪里了,我是初学者
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class JActionListener extends JFrame{
private JButton btn;//按钮
private int num=0;
public JActionListener()
{
super("JActionListener示例");
Container c=getContentPane();
c.setLayout(new FlowLayout(FlowLayout.CENTER));
btn=new JButton("你点击"+num+"次");
btn.addActionListener(new InerActionListener());
c.add(btn); }
class InerActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
JButton btn2=(JButton)e.getSource();
num++;
btn.setText("你点击"+num+"次");
}
} public static void main(String[] args) {
JActionListener al=new JActionListener();
al.setSize(400,400);
al.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
al.setVisible(true);
}
}

解决方案 »

  1.   


    import   javax.swing.*; 
    import   java.awt.*; 
    import   java.awt.event.*; 
    public   class   JActionListener   extends   JFrame{ 
    private   JButton   btn;//按钮 
    private   int   num=0; 
    public   JActionListener() 

         super( "JActionListener示例 "); 
         JPanel panel = new JPanel();
         this.getContentPane().add(panel); 
         btn=new JButton( "你点击 "+num+ "次 "); 
         btn.addActionListener(new   InerActionListener()); 
         panel.add(btn); 

    class   InerActionListener   implements   ActionListener 

         public   void   actionPerformed(ActionEvent   e) 
        { 
             //JButton   btn2=(JButton)e.getSource(); 
             num++; 
             btn.setText( "你点击 "+num+ "次 "); 
             JActionListener.this.repaint();
        } 
    } public   static   void   main(String[]   args)   { 
         JActionListener   al=new   JActionListener(); 
         al.setSize(400,400); 
         al.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
         al.setVisible(true); 

    }