zoukankan      html  css  js  c++  java
  • ActionListener三种实现

     /**
      * Simple1.java - 处理事件的第一种方法
      * 在这个例子中,利用一个ActionListener来监听事件源产生的事件
      * 用一些if语句来决定是哪个事件源
      */
      
      
      import java.awt.*;
      import java.awt.event.*;
      import javax.swing.*;
      
      public class Simple1
      {
       private static JFrame frame; // 定义为静态变量以便main使用
       private static JPanel myPanel; // 该面板用来放置按钮组件
       private JButton button1; // 这里定义按钮组件
       private JButton button2; // 以便让ActionListener使用
      
        public Simple1() // 构造器, 建立图形界面
       {
       // 新建面板
       myPanel = new JPanel();
        // 新建按钮
       button1 = new JButton("按钮1"); // 新建按钮1
       button2 = new JButton("按钮2");
      
       SimpleListener ourListener = new SimpleListener();
       // 建立一个actionlistener让两个按钮共享
       button1.addActionListener(ourListener);
       button2.addActionListener(ourListener);
      
       myPanel.add(button1); // 添加按钮到面板
       myPanel.add(button2);
       }
      
        private class SimpleListener implements ActionListener
        {
       /**
       * 利用该内部类来监听所有事件源产生的事件
        * 便于处理事件代码模块化
        */
        public void actionPerformed(ActionEvent e)
        {
       // 利用getActionCommand获得按钮名称
       // 也可以利用getSource()来实现
       // if (e.getSource() ==button1)
      
       String buttonName = e.getActionCommand();
       if (buttonName.equals("按钮1"))
       JOptionPane.showMessageDialog(frame,
       "按钮1 被点击");
       else if (buttonName.equals("按钮2"))
       JOptionPane.showMessageDialog(frame,
       "按钮2 被点击");
       else
       JOptionPane.showMessageDialog(frame,
       "Unknown event" );
       }
       }
      
       public static void main(String s[])
       {
       Simple1 gui = new Simple1(); // 新建Simple1组件
      
       frame = new JFrame("Simple1"); // 新建JFrame
       // 处理关闭事件的通常方法
       frame.addWindowListener(new WindowAdapter() {
       public void windowClosing(WindowEvent e)
       {System.exit(0);} });
      
       frame.getContentPane().add(myPanel);
       frame.pack();
       frame.setVisible(true);
       }
      }
      

     
     
    /**
      * Simple2.java - 处理事件的第二种方法
      * 在这个例子中,利用匿名内部类来监听每一个事件源产生的事件
      * 避免使用一些if语句来决定是哪个事件源
      */
      
      import java.awt.*;
      import java.awt.event.*;
      import javax.swing.*;
      
      public class Simple2
      {
           private static JFrame frame; // 定义为静态变量以便main使用
           private static JPanel myPanel; // 该面板用来放置按钮组件
           private JButton button1; // 这里定义按钮组件 
           private JButton button2; // 以便让ActionListener使用
           
           public Simple2() // 构造器, 建立图形界面
           {
               // 新建面板
               myPanel = new JPanel();
               // 新建按钮
               button1 = new JButton("按钮1"); // 新建按钮1
               button2 = new JButton("按钮2");
              
               // 每一个事件源需要一个监听器
               // 定义一个匿名内部类来监听事件源产生的事件
               button1.addActionListener(
                   new ActionListener()
                   {
                       public void actionPerformed(ActionEvent e)
                       {
                           JOptionPane.showMessageDialog(frame,"按钮1 被点击");
                       }
                   }
               );
              
               button2.addActionListener(
                   new ActionListener()
                   {
                       public void actionPerformed(ActionEvent e)
                       {
                           JOptionPane.showMessageDialog(frame,"按钮2 被点击");
                       }
                   }
               );
              
               myPanel.add(button1); // 添加按钮到面板
               myPanel.add(button2);
            }
              
            public static void main(String s[])
            {
                Simple2 gui = new Simple2(); // 新建Simple2组件
                                   
                frame = new JFrame("Simple2"); // 新建JFrame
                // 处理关闭事件的通常方法
                frame.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e)
                {System.exit(0);} });
                frame.getContentPane().add(myPanel);
                frame.pack(); 
                frame.setVisible(true);
            }
      }

    /**
      * Simple3.java - 处理事件的第三种方法
      * For this example, we will use inner member classes to
      * 在这个例子中,利用一般内部类来监听每个事件源产生的事件
      * 该方法避免了第二种方法中由于使用匿名内部类而导致的代码混乱
      * 便于集中处理事件代码
      * 每一个Hander可以被工具栏或菜单多次使用
      */
      import java.awt.*;
      import java.awt.event.*;
      import javax.swing.*;
      
      public class Simple3
      {
       private static JFrame frame; // 定义为静态变量以便main使用
       private static JPanel myPanel; // 该面板用来放置按钮组件
       private JButton button1; // 这里定义按钮组件
       private JButton button2; // 以便让ActionListener使用
      
       // 利用一般内部类来监听每一个事件源产生的事件如(button1, button2)
       private class Button1Handler implements ActionListener
       {
       public void actionPerformed(ActionEvent e)
       {
       JOptionPane.showMessageDialog(frame,"按钮1 被点击");
       }
       }
      
       private class Button2Handler implements ActionListener
       {
       public void actionPerformed(ActionEvent e)
       {
       JOptionPane.showMessageDialog(frame,"按钮2 被点击");
       }
       }
      
       public Simple3() // // 构造器, 建立图形界面
       {
       // 新建面板
       myPanel = new JPanel();
       // 新建按钮
       button1 = new JButton("按钮1"); // 新建按钮1
       button2 = new JButton("按钮2");
      
       // 对每一个组件注册监听内部类
       button1.addActionListener(new Button1Handler());
       button2.addActionListener(new Button2Handler());
      
       myPanel.add(button1); // 添加按钮到面板
       myPanel.add(button2);
       }
      
       public static void main(String s[])
       {
       Simple3 gui = new Simple3(); // 新建Simple3组件
      
       frame = new JFrame("Simple3"); // 新建JFrame
       // 处理关闭事件的通常方法
       frame.addWindowListener(new WindowAdapter() {
       public void windowClosing(WindowEvent e)
       {System.exit(0);} });
      
       frame.getContentPane().add(myPanel);
       frame.pack();
       frame.setVisible(true);
       }
      }

  • 相关阅读:
    sqhhb
    12333
    12

    今日份
    12
    彻底理解 Cookie、Session、Token
    https原理
    12312
    uiower
  • 原文地址:https://www.cnblogs.com/rojas/p/4828138.html
Copyright © 2011-2022 走看看