jbutton.addActionListener(new ActionListener()  {
      public void actionPerformed(ActionEvent e) {
        jbutton_actionPerformed(e);//具体的处理
      }
    });

解决方案 »

  1.   

    thinking 里面的例子:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;class ColorAction extends AbstractAction
    {  public ColorAction(String name, Icon icon, 
          Color c, Component comp)
       {  putValue(Action.NAME, name);
          putValue(Action.SMALL_ICON, icon);
          putValue("Color", c);
          target = comp;
       }
       
       public void actionPerformed(ActionEvent evt)
       {  Color c = (Color)getValue("Color");
          target.setBackground(c);
          target.repaint();
       }
       
       private Component target;
    }class ActionButton extends JButton
    {  public ActionButton(Action a)
       {  setText((String)a.getValue(Action.NAME));
          Icon icon = (Icon)a.getValue(Action.SMALL_ICON);
          if (icon != null)
             setIcon(icon);
          addActionListener(a);
       }
    }class SeparateGUIFrame extends JFrame
    {  public SeparateGUIFrame()
       {  setTitle("SeparateGUITest");
          setSize(300, 200);
          addWindowListener(new WindowAdapter()
             {  public void windowClosing(WindowEvent e)
                {  System.exit(0);
                }
             } );
          JPanel panel = new JPanel();      Action blueAction = new ColorAction("Blue", 
             new ImageIcon("blue-ball.gif"),
             Color.blue, panel);
          Action yellowAction = new ColorAction("Yellow", 
             new ImageIcon("yellow-ball.gif"),
             Color.yellow, panel);
          Action redAction = new ColorAction("Red", 
             new ImageIcon("red-ball.gif"),
             Color.red, panel);
          
          panel.add(new ActionButton(yellowAction));
          panel.add(new ActionButton(blueAction));
          panel.add(new ActionButton(redAction));
          
          panel.registerKeyboardAction(yellowAction, 
             KeyStroke.getKeyStroke(KeyEvent.VK_Y, 0),
             JComponent.WHEN_IN_FOCUSED_WINDOW);
          panel.registerKeyboardAction(blueAction, 
             KeyStroke.getKeyStroke(KeyEvent.VK_B, 0),
             JComponent.WHEN_IN_FOCUSED_WINDOW);
          panel.registerKeyboardAction(redAction, 
             KeyStroke.getKeyStroke(KeyEvent.VK_R, 0),
             JComponent.WHEN_IN_FOCUSED_WINDOW);      
          
          Container contentPane = getContentPane();
          contentPane.add(panel);      JMenu m = new JMenu("Color");
          m.add(yellowAction);
          m.add(blueAction);
          m.add(redAction);
          JMenuBar mbar = new JMenuBar();
          mbar.add(m);
          setJMenuBar(mbar);
       }
    }public class SeparateGUITest
    {  public static void main(String[] args)
       {  JFrame frame = new SeparateGUIFrame();
          frame.show();  
       }
    }
      

  2.   

    java中对控件的响应一般都要添加监听类 比如JButton添加鼠标响应事件
    jbutton.addMouseListener(new myMouseListener );
      class myMouseListener implements MouseListener
    {//加入mouselistener类的所有接口函数}在jb中将更加简单
      

  3.   

    上面的例子是否可以这么理解:
    对于按钮要addActionListener
    对于panel要registerKeyboardAction
    对于窗体要addWindowListener那么,为什么有的是要添加激活监听,有的却又要注册键盘触发?代码可能是最有说服力的。可我不懂为什么要这么写呀。请说说思路好吗?
      

  4.   

    为什么有的是要添加激活监听,有的却又要注册键盘触发?因为不同的事件需要不同的类来实现不同的接口来见听呀
    其实注册监听的时候大体都是这样的
    jbutton.addActionListener(new ActionListener()  {
          public void actionPerformed(ActionEvent e) {
            jbutton_actionPerformed(e);//具体的处理
          }
        });
    只是不同的监听用到的事件类和监听接口不同
      

  5.   

    而且大家的需求可能不一样,所以有的是键盘事件,有的是鼠标事件java提供很多这样的接口,你实现了接口里的方法就行了。
      

  6.   

    java是事件处理方式是事件代表模式。
    点击一个按钮,就产生一个事件,事件的类型是Action事件。
    按钮就是事件源,它把这个事件被一个或多个对这个事件感兴趣的
    监听器得到。事件源怎么知道谁对这个事件感兴趣呢?
    这就需要向事件源注册监听器。而事件是在监听器里被处理的。
    而一个事件源可能会发生多种事件(例如按钮),对于不同的
    事件就要注册不同类型的监听器来处理。
      

  7.   

    鼠标事件就是
    控键.addMouseListener(new MouseAdapter(){
       public void mouseClicked(MouseEvent e)  {}
    ....//好多其他事件什么void mouseClicked(MouseEvent e) 
              Invoked when the mouse button has been clicked (pressed and released) on a component. 
     void mouseEntered(MouseEvent e) 
              Invoked when the mouse enters a component. 
     void mouseExited(MouseEvent e) 
              Invoked when the mouse exits a component. 
     void mousePressed(MouseEvent e) 
              Invoked when a mouse button has been pressed on a component. 
     void mouseReleased(MouseEvent e)  }键盘事件就是addKeyListener了,里面监听的事件查查JDK API就知道了
      

  8.   

    jiaojian77(我也在学Java
    事件的类型是Action事件?这句什么意思呀?
    是否可以这么理解:    每一种事件监听器(一种接口)抽象了对某一种事件的处理方法。具体如何处理需要自己写。当想要处理控件的一个事件时,就添加能处理该事件的事件监听器(即连接并实现该接口。)
      

  9.   

    这个问题在别的帖子里有过,直接使用addKeyListener(new KeyListener(){
                                         public void keyTyped(KeyEvent e){}
                                         public void keyPressed(KeyEvent e){}
                                         public void keyReleased(KeyEvent e){}
                                      });//这是键盘事件
        
      

  10.   

    鼠标事件使用addMouseListener(new MouseListener(){
                   public void mouseClicked(MouseEvent e){}
                   public void mousePressed(MouseEvent e){}
                   public void mouseReleased(MouseEvent e){}
                   public void mouseEntered(MouseEvent e){}
                   public void mouseExited(MouseEvent e){}
                });
      

  11.   

    to tony_jian(神经质男主角)Action事件是一种按钮事件,代表按钮被触发(可能是鼠标,也可能是键盘)正确。