4.事件监听
事件监听:什么事情发生了,需要做什么?
什么事情是事件,做什么?是我们编辑的功能
事件:是鼠标事件,键盘事件等。
例如鼠标按下,要下载音乐
键盘按下哪一个按键,需要执行什么操作
public static void main(String[] args) {
Frame frame = new Frame("事件监听窗口");
Button btn = new Button("按钮");
//实例化实现类MyActionListener
MyActionListener myActionListener = new MyActionListener();
btn.addActionListener(myActionListener)
}
}
//实现类MyActionListener 实现接口 ActionListener
//重写了接口中的方法actionPerformed
class MyActionListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
System.out.print("按钮被点击");
}
}
事件监听例子
public class TestActionListener_02 {
public static void main(String[] args) {
Frame frame = new Frame("事件监听窗口");
Button btn = new Button("按钮");
frame.add(btn,BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
frame.setSize(500, 300);
//实例化实现类MyActionListener
MyActionListener myActionListener = new MyActionListener();
btn.addActionListener(myActionListener);
//关闭程序
WindowClosing(frame);
}
//抽象关闭方法
//private是本类可以使用,是static是静态可以调静态方法
private static void WindowClosing(Frame frame) {
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
//实现类MyActionListener 实现接口 ActionListener
//重写了接口中的方法actionPerformed
class MyActionListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("按钮被点击");
}
}
两个按钮共用一个事件
优点,不需要一个按钮一个按钮的写实现类。可以多个按钮,通过判断按钮的信息来判断哪一个按钮被点击。编写不同的实现方法
public static void main(String[] args) {
//两个按钮共用一个事件
//可以避免多个按钮的时候,不用一个一个的写实现类
//需要学习?方法来判断是事件发生的时候,是哪一个按钮被点击.
//setActionCommand()
Frame frame = new Frame("两个按钮共用一个事件");
frame.setVisible(true);
frame.setSize(500, 500);
Button btn1 = new Button("start");
Button btn2 = new Button("stop");
//可以显式定义触发是返回的信息,如果不显式定义,则使用默认label。
btn2.setActionCommand("这是暂停按钮--显式定义");
frame.add(btn1,BorderLayout.NORTH );
frame.add(btn2,BorderLayout.SOUTH);
MyMonitor myMonitor = new MyMonitor();
btn1.addActionListener( myMonitor );
btn2.addActionListener( myMonitor );
//关闭窗口
closeWindow(frame);
}
//抽象关闭窗口方法
public static void closeWindow(Frame frame) {
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
class MyMonitor implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("按钮被点击:=》 "+e.getActionCommand());
}
}
如果按钮都没有label也没有定义,那么会返回什么? 什么都没有
那么怎么来判断是哪一个按钮???
e.getActionCommand();//获取返回信息
btn2.setActionCommand("the_end_button");//设置信息
public static void main(String[] args) {
Frame frame = new Frame("两个按钮共用一个事件");
frame.setVisible(true);
frame.setSize(500, 500);
//按钮及label
Button btn1 = new Button("start");
Button btn2 = new Button("stop");
Button btn3 = new Button("pause");
//可以显式定义触发是返回的信息,如果不显式定义,则使用默认label。
btn2.setActionCommand("the_end_button");
//布局按钮
frame.add(btn1,BorderLayout.NORTH );
frame.add(btn2,BorderLayout.SOUTH);
frame.add(btn3,BorderLayout.CENTER);
MyMonitor2 myMonitor = new MyMonitor2();
//按钮添加事件监听
btn1.addActionListener( myMonitor );
btn2.addActionListener( myMonitor );
btn3.addActionListener( myMonitor );
//关闭窗口
closeWindow(frame);
}
//抽象关闭窗口方法
public static void closeWindow(Frame frame) {
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
//实现监听 的实现类
class MyMonitor2 implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("start")) {
System.out.println("这是开始按钮被点击了");
}else if (e.getActionCommand().equals("the_end_button")) {
System.out.println("这是显式btn按钮被点击了");
}else {
System.out.println("这是 暂停 按钮被点击了");
}
}
}
5.输入框事件监听
textField 文本框 单行输入
textArea 文本域 多行输入
一般是分开类写。main方法一般只写启动
第二个是自己的类
new textfile
放入 frame
调整frame的可见 大小等
实例化 实现类的接口(事件)
给文本框添加事件
三个是实现类
public class TextField_ActionListener {
//文本框的事件监听器
public static void main(String[] args) {
//启动
new MyTextFiled();
}
}
//
class MyTextFiled extends Frame{
public MyTextFiled() {
super();
TextField textField = new TextField();//生成文本框
add(textField); //添加进frame
setVisible(true); //设置frame可见性
setSize(500, 500);
TfActionListener tf = new TfActionListener();//实例化接口的实现类
textField.addActionListener(tf);
//添加文本框监听事件
closeWindow(this);
}
public static void closeWindow(Frame frame) {
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
//文本框事件监听实现
class TfActionListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
//e.getSource();//获得资源方法,但会的是一个对象
TextField field=(TextField)e.getSource();//强转形 多态
// System.out.println(field);
System.out.println(field.getText());//转形后getText()获得文本框输入的方法
}
}
疑惑这个关闭的方法,应该怎么写,怎么调用才对,为什么写this也可以,而不是写super(),super只能写第一行???
今天的文章GUI 事件监听和文本框事件监听分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/32522.html