Java Swing事件处理——行为事件及监听处理 ActionListener和内部类
来源:互联网 发布:淘宝卖飞机票 编辑:程序博客网 时间:2024/05/16 08:52
下面是一个按钮的实例
package com.liuyanzhao; import java.awt.Button; import java.awt.Color; import java.awt.Frame;import java.awt.Window; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.WindowConstants; public class Demo2 implements ActionListener { JPanel panel; JButton button; public static void main(String[] args) { Demo2 d = new Demo2(); d.go(); } public void go() { JFrame frame = new JFrame(); button = new JButton("红色"); panel = new JPanel(); panel.setSize(200,100); panel.add(button); button.addActionListener(this);//向按钮注册 frame.setBackground(Color.red); frame.setVisible(true); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); frame.add(panel); frame.setBounds(100, 200, 300, 300); } @Override public void actionPerformed(ActionEvent e) { //处理事件的方法 if(e.getActionCommand()=="红色") { button.setText("蓝色"); panel.setBackground(Color.red); button.setEnabled(true); } else if(e.getActionCommand()=="蓝色") { button.setText("红色"); panel.setBackground(Color.blue); button.setEnabled(true); } } }
效果是:点击按钮button,按钮上的字会变化,容器panel的背景会变色,按钮会重新激活,可以循环。
下面是两个按钮的实例
package com.liuyanzhao; import java.awt.Button; import java.awt.Color; import java.awt.Frame; import java.awt.Label; import java.awt.Panel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.WindowConstants; public class Demo2 implements ActionListener { JButton button_open ; JButton button_close; Label label;//这个地方不要用JLable,否则空白符不占位 Label label2; public static void main(String[] args) { Demo2 d = new Demo2(); d.go(); } public void go() { JFrame frame = new JFrame(); frame.setSize(300, 100); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); frame.setVisible(true); JPanel panel = new JPanel(); frame.add(panel); label = new Label("灯状态:"); label2 = new Label(" "); button_open = new JButton("开灯"); button_close = new JButton("关灯"); button_open.addActionListener(this); button_close.addActionListener(this); panel.add(label); panel.add(label2); panel.add(button_open); panel.add(button_close); } @Override public void actionPerformed(ActionEvent e) { //方法一:getActionCommand // if(e.getActionCommand()=="开灯") { // label2.setBackground(Color.red); // button_open.setEnabled(false); // button_close.setEnabled(true); // } else if(e.getActionCommand()=="关灯") { // label2.setBackground(Color.black); // button_close.setEnabled(false); // button_open.setEnabled(true); // } //方法二:getSource if(e.getSource()==button_open) {//button_open不要加引号 label2.setBackground(Color.red); button_open.setEnabled(false); button_close.setEnabled(true); } else if(e.getSource()==button_close) {//button_closen不要加引号 label2.setBackground(Color.black); button_close.setEnabled(false); button_open.setEnabled(true); } } }
使用内部类
package com.liuyanzhao; import java.awt.Button; import java.awt.Color; import java.awt.Frame; import java.awt.Label; import java.awt.Panel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.WindowConstants; public class Demo2 { public Demo2 daili; JButton button_open ; JButton button_close; Label label;//这个地方不要用JLable,否则空白符不占位 Label label2; public static void main(String[] args) { Demo2 d = new Demo2(); d.go(); } public void go() { JFrame frame = new JFrame(); frame.setSize(300, 100); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); frame.setVisible(true); JPanel panel = new JPanel(); frame.add(panel); label = new Label("灯状态:"); label2 = new Label(" "); button_open = new JButton("开灯"); button_close = new JButton("关灯"); //相对于将this传给注册方法,现在传的是对应的实例 button_open.addActionListener(new MyListener()); button_close.addActionListener(new MyListener()); panel.add(label); panel.add(label2); panel.add(button_open); panel.add(button_close); } //我们可以创建多个内部类,比如LabelListener和ColorListener class MyListener implements ActionListener { public void actionPerformed(ActionEvent e) { if(e.getSource()==button_open) {//button_open不要加引号 label2.setBackground(Color.red); button_open.setEnabled(false); button_close.setEnabled(true); } else if(e.getSource()==button_close) {//button_closen不要加引号 label2.setBackground(Color.black); button_close.setEnabled(false); button_open.setEnabled(true); } } } }
效果图如下
本文链接:https://liuyanzhao.com/4054.html
阅读全文
0 0
- Java Swing事件处理——行为事件及监听处理 ActionListener和内部类
- 【Swing】 事件处理+actionlistener
- Java Swing事件处理——键盘事件及监听处理 KeyListener 按键测试
- Java Swing界面编程(22)---事件处理:动作事件及监听处理
- Java Swing界面编程(24)---事件处理:键盘事件及监听处理
- Java Swing界面编程(25)---事件处理:鼠标事件及监听处理
- JAVA AWT 事件处理及内部类的实现
- ActionListener接口--事件处理基础
- java swing基础和事件处理
- 事件监听,内部类
- Java — 事件监听、事件处理 初体验
- 事件监听 ActionListener
- android基于监听的事件处理(内部类作为事件监听器)
- Java Swing事件处理机制
- Android事件监听及处理
- 内部类的使用 事件处理
- 事件处理005(匿名内部类)
- 事件的监听和处理
- java工具类-Ping扫描-使用Nmap
- TensorFlow学习笔记9----TensorFlow Wide & Deep Learning Tutorial
- slice()和splice()的区别
- WP REST API: Setting Up and Using Basic Authentication
- could not initialize proxy
- Java Swing事件处理——行为事件及监听处理 ActionListener和内部类
- 自定义cnn网络识别验证码(附90%训练模型)
- Java随机密码生成器,Java随机生成长度不少于6的指定长度的密码,且这个字符串必须包含大小写字母、数字和特殊字符,四种的任意三种
- docker 使用 rabbitmq
- slice与splice的区别
- R连接数据库(以下方法为博主推荐方法)
- Ubuntu14.04 安装搜狗输入法
- java中ImageIcon路径问题
- qml初学日记(3)- qml文件的运行方式