• Java添加事件的几种方式(转载了codebrother的文章)


    /**
     * Java事件监听处理——自身类实现ActionListener接口,作为事件监听器
     *
     * @author codebrother
     */
    class EventListener1 extends JFrame implements ActionListener {
      private JButton btBlue, btDialog;
    
      public EventListener1() {
        setTitle("Java GUI 事件监听处理");
        setBounds(100, 100, 500, 350);
        setLayout(new FlowLayout());
        btBlue = new JButton("蓝色");   
        btDialog = new JButton("弹窗");
        
        // 将按钮添加事件监听器
        btBlue.addActionListener(this);
        btDialog.addActionListener(this);
    
        add(btBlue);
        add(btDialog);
    
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      }
      // ***************************事件处理***************************
      @Override
      public void actionPerformed(ActionEvent e) {
        if (e.getSource() == btBlue) {
          Container c = getContentPane();
          c.setBackground(Color.BLUE);
        }
        else if (e.getSource() == btDialog) {
          JDialog dialog = new JDialog();
          dialog.setBounds(300, 200, 400, 300);
          dialog.setVisible(true);
        }
      }
    
    }
    
    /**
     * Java事件监听处理——内部类处理
     *
     * @author codebrother
     */
    
    class EventListener3 extends JFrame {
      private JButton btBlue, btDialog;
    
      // 构造方法
      public EventListener3() {
        setTitle("Java GUI 事件监听处理");
        setBounds(100, 100, 500, 350);
        setLayout(new FlowLayout());
        btBlue = new JButton("蓝色");
        btDialog = new JButton("弹窗");
        // 添加事件监听器对象(面向对象思想)
        btBlue.addActionListener(new ColorEventListener());
        btDialog.addActionListener(new DialogEventListener());
    
        add(btBlue);
        add(btDialog);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      }
      // 内部类ColorEventListener,实现ActionListener接口
      class ColorEventListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
          Container c = getContentPane();
          c.setBackground(Color.BLUE);
        }
      }
      // 内部类DialogEventListener,实现ActionListener接口
      class DialogEventListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
          JDialog dialog = new JDialog();
          dialog.setBounds(300, 200, 400, 300);
          dialog.setVisible(true);
        }
      }
    
    }
    
    /**
     * Java事件监听处理——匿名内部类处理
     *
     * @author codebrother
     */
    class EventListener2 extends JFrame {
      private JButton btBlue, btDialog;
    
      public EventListener2() {
        setTitle("Java GUI 事件监听处理");
        setBounds(100, 100, 500, 350);
        setLayout(new FlowLayout());
    
        btBlue = new JButton("蓝色");
        btDialog = new JButton("弹窗");
        
        // 添加事件监听器(此处即为匿名类)
        btBlue.addActionListener(new ActionListener() {
          // 事件处理
          @Override
          public void actionPerformed(ActionEvent e) {
            Container c = getContentPane();
            c.setBackground(Color.BLUE);
          }
        });
        
        // 并添加事件监听器 
        btDialog.addActionListener(new ActionListener() {
          @Override
          public void actionPerformed(ActionEvent e) {
            JDialog dialog = new JDialog();
            dialog.setBounds(300, 200, 400, 300);
            dialog.setVisible(true);
          }
        });
    
        add(btBlue);
        add(btDialog);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      }
    
    }
    
    /**
     * Java事件监听处理——外部类处理
     *
     * @author codebrother
     */
    class EventListener4 extends JFrame {
      private JButton btBlue, btDialog;
    
      public EventListener4() {
        setTitle("Java GUI 事件监听处理");
        setBounds(100, 100, 500, 350);
        setLayout(new FlowLayout());
        btBlue = new JButton("蓝色");
        btDialog = new JButton("弹窗");
        // 将按钮添加事件监听器
        btBlue.addActionListener(new ColorEventListener(this));
        btDialog.addActionListener(new DialogEventListener());
    
        add(btBlue);
        add(btDialog);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      }
    
    }
    // 外部类ColorEventListener,实现ActionListener接口
    class ColorEventListener implements ActionListener {
      private EventListener4 el;
      ColorEventListener(EventListener4 el) {
        this.el = el;
      }
      @Override
      public void actionPerformed(ActionEvent e) {
        Container c = el.getContentPane();
        c.setBackground(Color.BLUE);
      }
    }
    // 外部类DialogEventListener,实现ActionListener接口
    class DialogEventListener implements ActionListener {
      @Override
      public void actionPerformed(ActionEvent e) {
        JDialog dialog = new JDialog();
        dialog.setBounds(300, 200, 400, 300);
        dialog.setVisible(true);
      }
    }
    
    public class ActionListenerTest
    {
      public static void main(String args[])
      {
        new EventListener2();
      }
    }
  • 相关阅读:
    记一次安装python umysql模块的报错
    elasticsearch 6.2.4添加用户密码认证
    mysqldump 备份数据和恢复
    记一次线上Java程序导致服务器CPU占用率过高的问题排除过程
    配置rpm包安装的jdk环境变量
    centos6 & centos 7 防火墙设置
    MySQL启动出现The server quit without updating PID file错误解决办法
    ptmalloc,tcmalloc和jemalloc内存分配策略研究 ? I'm OWen..
    为什么要内存对齐 Data alignment: Straighten up and fly right
    linux驱动学习_1
  • 原文地址:https://www.cnblogs.com/wxj-106/p/7489905.html
Copyright © 2020-2023  润新知