Python 官方文档:入门教程 => 点击学习
目录一、初始代码架构二、需求分析2.1 写监听器2.2 发现问题2.3 使用匿名内部类优化代码2.4 优化完之后发现还是不是很优雅2.5 使用Lambda表达式再优化2.6 最终的代
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Btn extends JFrame{
public static void main(String []args){
JFrame f = new JFrame("事件监听测试");
f.setBounds(0,0,300,400);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
f.setVisible(false);
f.dispose();
System.exit(0);
}
});
Container page = f.getContentPane();
page.setLayout(new FlowLayout());
JButton btn = new JButton("打印");
page.add(btn);
f.setVisible(true);
}
}
运行的结果
想要点击按钮的时候在终端打印一行信息(比如"按钮被点击")
产品爸爸,提了新需求,不能实现也要创造办法实现的啦
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Btn{
public static void main(String []args){
JFrame f = new JFrame("事件监听测试");
f.setBounds(0,0,300,400);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
f.setVisible(false);
f.dispose();
System.exit(0);
}
});
Container page = f.getContentPane();
page.setLayout(new FlowLayout());
JButton btn = new JButton("打印");
btnListener bl = new btnListener();
btn.addActionListener(bl);
page.add(btn);
f.setVisible(true);
}
}
class btnListener implements ActionListener{
@Override
public void actionPerfORMed(ActionEvent e){
System.out.println("按钮被点击了----");
}
}
点击按钮的结果
中规中矩地实现监听器地话,发现要另外写一个类实现
ActionListener
接口地方法,使得代码架构显得比较臃肿。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Btn{
public static void main(String []args){
JFrame f = new JFrame("事件监听测试");
f.setBounds(0,0,300,400);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
f.setVisible(false);
f.dispose();
System.exit(0);
}
});
Container page = f.getContentPane();
page.setLayout(new FlowLayout());
JButton btn = new JButton("打印");
ActionListener bl = new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
System.out.println("匿名内部类优化----");
}
};
btn.addActionListener(bl);
page.add(btn);
f.setVisible(true);
}
}
class btnListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e){
System.out.println("按钮被点击了----");
}
}
因为每次监听都有重复代码
@Override
public void actionPerformed(ActionEvent e){
System.out.println("匿名内部类优化----");
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Btn{
public static void main(String []args){
JFrame f = new JFrame("事件监听测试");
f.setBounds(0,0,300,400);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
f.setVisible(false);
f.dispose();
System.exit(0);
}
});
Container page = f.getContentPane();
page.setLayout(new FlowLayout());
JButton btn = new JButton("打印");
// ActionListener bl = new ActionListener(){
// @Override
// public void actionPerformed(ActionEvent e){
// System.out.println("匿名内部类优化----");
// }
// };
// btn.addActionListener(bl);
btn.addActionListener((e)->{
System.out.println("使用Lambda表达式优化");
});
page.add(btn);
f.setVisible(true);
}
}
class btnListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e){
System.out.println("按钮被点击了----");
}
}
结果
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Btn{
public static void main(String []args){
JFrame f = new JFrame("事件监听测试");
f.setBounds(0,0,300,400);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
f.setVisible(false);
f.dispose();
System.exit(0);
}
});
Container page = f.getContentPane();
page.setLayout(new FlowLayout());
JButton btn = new JButton("打印");
btn.addActionListener((e)->{
System.out.println("使用Lambda表达式优化");
});
page.add(btn);
f.setVisible(true);
}
}
package java.awt.event;
import java.util.EventListener;
public interface ActionListener extends EventListener {
public void actionPerformed(ActionEvent e);
}
到此这篇关于Java基础学习之Swing事件监听的文章就介绍到这了,更多相关Swing事件监听内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: Java基础学习之Swing事件监听
本文链接: https://lsjlt.com/news/126818.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0