Java Swing事件处理——行为事件及监听处理 ActionListener和内部类

avatar 2017年5月10日00:18:28 评论 218 views

下面是一个按钮的实例

  1. package com.liuyanzhao;
  2. import java.awt.Button;
  3. import java.awt.Color;
  4. import java.awt.Frame;import java.awt.Window;
  5. import java.awt.event.ActionEvent;
  6. import java.awt.event.ActionListener;
  7. import java.awt.event.WindowEvent;
  8. import java.awt.event.WindowListener;
  9. import javax.swing.JButton;
  10. import javax.swing.JFrame;
  11. import javax.swing.JPanel;
  12. import javax.swing.WindowConstants;
  13. public class Demo2 implements ActionListener {
  14.     JPanel panel;
  15.     JButton button;
  16.     public static void main(String[] args) {
  17.         Demo2 d = new Demo2();
  18.         d.go();
  19.     }
  20.     public void go() {
  21.         JFrame frame = new JFrame();
  22.         button = new JButton("红色");
  23.         panel = new JPanel();
  24.         panel.setSize(200,100);
  25.         panel.add(button);
  26.         button.addActionListener(this);//向按钮注册
  27.         frame.setBackground(Color.red);
  28.         frame.setVisible(true);
  29.         frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  30.         frame.add(panel);
  31.         frame.setBounds(100200300300);
  32.     }
  33.     @Override
  34.     public void actionPerformed(ActionEvent e) { //处理事件的方法
  35.         if(e.getActionCommand()=="红色") {
  36.             button.setText("蓝色");
  37.             panel.setBackground(Color.red);
  38.             button.setEnabled(true);
  39.         } else if(e.getActionCommand()=="蓝色") {
  40.             button.setText("红色");
  41.             panel.setBackground(Color.blue);
  42.             button.setEnabled(true);
  43.         }
  44.     }
  45. }

效果是:点击按钮button,按钮上的字会变化,容器panel的背景会变色,按钮会重新激活,可以循环。

下面是两个按钮的实例

  1. package com.liuyanzhao;
  2. import java.awt.Button;
  3. import java.awt.Color;
  4. import java.awt.Frame;
  5. import java.awt.Label;
  6. import java.awt.Panel;
  7. import java.awt.event.ActionEvent;
  8. import java.awt.event.ActionListener;
  9. import javax.swing.JButton;
  10. import javax.swing.JFrame;
  11. import javax.swing.JLabel;
  12. import javax.swing.JPanel;
  13. import javax.swing.WindowConstants;
  14. public class Demo2 implements ActionListener {
  15.     JButton button_open ;
  16.     JButton button_close;
  17.     Label label;//这个地方不要用JLable,否则空白符不占位
  18.     Label label2;
  19.     public static void main(String[] args) {
  20.         Demo2 d = new Demo2();
  21.         d.go();
  22.     }
  23.     public void go() {
  24.         JFrame frame = new JFrame();
  25.         frame.setSize(300100);
  26.         frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  27.         frame.setVisible(true);
  28.         JPanel panel = new JPanel();
  29.         frame.add(panel);
  30.         label = new Label("灯状态:");
  31.         label2 = new Label("  ");
  32.         button_open = new JButton("开灯");
  33.         button_close = new JButton("关灯");
  34.         button_open.addActionListener(this);
  35.         button_close.addActionListener(this);
  36.         panel.add(label);
  37.         panel.add(label2);
  38.         panel.add(button_open);
  39.         panel.add(button_close);
  40.     }
  41.     @Override
  42.     public void actionPerformed(ActionEvent e) {
  43.         //方法一:getActionCommand
  44. //      if(e.getActionCommand()=="开灯") {
  45. //          label2.setBackground(Color.red);
  46. //          button_open.setEnabled(false);
  47. //          button_close.setEnabled(true);
  48. //      } else if(e.getActionCommand()=="关灯") {
  49. //          label2.setBackground(Color.black);
  50. //          button_close.setEnabled(false);
  51. //          button_open.setEnabled(true);
  52. //      }
  53.         //方法二:getSource
  54.         if(e.getSource()==button_open) {//button_open不要加引号
  55.             label2.setBackground(Color.red);
  56.             button_open.setEnabled(false);
  57.             button_close.setEnabled(true);
  58.         } else if(e.getSource()==button_close) {//button_closen不要加引号
  59.             label2.setBackground(Color.black);
  60.             button_close.setEnabled(false);
  61.             button_open.setEnabled(true);
  62.         }
  63.     }
  64. }

使用内部类

  1. package com.liuyanzhao;
  2. import java.awt.Button;
  3. import java.awt.Color;
  4. import java.awt.Frame;
  5. import java.awt.Label;
  6. import java.awt.Panel;
  7. import java.awt.event.ActionEvent;
  8. import java.awt.event.ActionListener;
  9. import javax.swing.JButton;
  10. import javax.swing.JFrame;
  11. import javax.swing.JLabel;
  12. import javax.swing.JPanel;
  13. import javax.swing.WindowConstants;
  14. public class Demo2 {
  15.     public Demo2 daili;
  16.     JButton button_open ;
  17.     JButton button_close;
  18.     Label label;//这个地方不要用JLable,否则空白符不占位
  19.     Label label2;
  20.     public static void main(String[] args) {
  21.         Demo2 d = new Demo2();
  22.         d.go();
  23.     }
  24.     public void go() {
  25.         JFrame frame = new JFrame();
  26.         frame.setSize(300100);
  27.         frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  28.         frame.setVisible(true);
  29.         JPanel panel = new JPanel();
  30.         frame.add(panel);
  31.         label = new Label("灯状态:");
  32.         label2 = new Label("  ");
  33.         button_open = new JButton("开灯");
  34.         button_close = new JButton("关灯");
  35.         //相对于将this传给注册方法,现在传的是对应的实例
  36.         button_open.addActionListener(new MyListener());
  37.         button_close.addActionListener(new MyListener());
  38.         panel.add(label);
  39.         panel.add(label2);
  40.         panel.add(button_open);
  41.         panel.add(button_close);
  42.     }
  43.     //我们可以创建多个内部类,比如LabelListener和ColorListener
  44.     class MyListener implements ActionListener  {
  45.         public void actionPerformed(ActionEvent e) {
  46.             if(e.getSource()==button_open) {//button_open不要加引号
  47.                 label2.setBackground(Color.red);
  48.                 button_open.setEnabled(false);
  49.                 button_close.setEnabled(true);
  50.             } else if(e.getSource()==button_close) {//button_closen不要加引号
  51.                 label2.setBackground(Color.black);
  52.                 button_close.setEnabled(false);
  53.                 button_open.setEnabled(true);
  54.             }
  55.         }
  56.     }
  57. }

效果图如下

 

 

本文地址:http://liuyanzhao.com/4054.html

转载请注明

  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: