package testDemo1;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/*
* 组件.addXXXListener(new XXXAdapter(){
*
* public void methodname(XXXEvent e){}
*
* });
*
* */
public class FrameTest {
public static void main(String[] args) {
Frame f = new Frame("我的第一个窗口");// 该窗口默认不显示
f.setSize(400, 600);// 设置窗口大小
f.setLocation(500, 50);// 设置窗口显示位置
f.setVisible(true);// 显示窗口
//添加一个按钮组件
Button but = new Button("my button");// 按钮设置为中文可能会出现乱码
f.setLayout(new FlowLayout());// 默认是边界式布局(按钮巨大),因此需要在主面板中设置布局
f.add(but);// 添加按钮到面板
//添加一个文本框组件
TextField tf = new TextField(40);//文本框的长度设置为40
TextField tf2 = new TextField(40);//第二个文本框
f.add(tf);
f.add(tf2);
but.addActionListener(new ActionListener() {// 按钮操作的监听器
@Override
public void actionPerformed(ActionEvent e) {// 只有这样一个可重写的方法
System.out.println("按钮被触发" + e);
}
});
but.addMouseListener(new MouseAdapter() {//鼠标操作的监听器
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("鼠标单击");
if(e.getClickCount() == 2) {//如果按键次数为2次
System.out.println("鼠标双击");
}
}
});
f.addWindowListener(new WindowAdapter() {// 窗口的监听器
@Override
public void windowClosing(WindowEvent e) {
System.out.println("窗口关闭");// 命令行输出窗口关闭
System.exit(0);// 关闭进程(这两行代码顺序不能颠倒)
}
});
tf.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
char key = e.getKeyChar();
int code = e.getKeyCode();
System.out.println("按下的按键是:"+key);//这样只能输出ABCD等按键
System.out.println("按下的按键是:"+KeyEvent.getKeyText(code));//这样可以输出其他按键
System.out.println("按键的ASCII码是"+code);
}
});
tf2.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
int code = e.getKeyCode();
if(!(code >= KeyEvent.VK_0 && code <= KeyEvent.VK_9)) {//如果按键不是0-9(非小键盘)
System.out.println("必须是0-9的数字");
}
}
});
}
}
分享到:
相关推荐
事件监听器(XXXListener)首先要与其监听的组件(即事件源)建立关联,即事件源注册监听器,当组件上发生交互作用时,组件会自动产生一个相对应的事件对象(XX XEvent),并将该事件对象的引用传递给与之相关联的...
在Java中,事件监听器接口通常命名为`XxxListener`,与处理的事件类相对应。 ### 2. Java事件处理机制流程 事件处理过程可以分为以下几个步骤: 1. 事件监听器与事件源建立关联,即为事件源注册监听器。 2. 用户...
2. 创建事件监听器接口:如XXXListener,该接口继承自EventListener,并声明一系列处理方法,对应不同的事件行为。 ```java public interface XXXListener extends EventListener { void action1(XXXEvent evt); ...
Swing的事件处理模型采用了一种基于观察者模式的设计,允许组件触发自定义逻辑事件,并由感兴趣的监听器进行处理。 首先,事件类(Event)通常是Swing组件内部事件的表示。例如,`XXXEvent`是特定于组件的事件类型...
* 事件监听器:是指可以触发某一个事件的动作的对象 事件监听机制的流程图为: 1. 确定事件源 2. 通过事件源对象的addXXXListener()方法将侦听器注册到该事件源上 3. 该方法中接收XXXListener的子类对象,或者...
(1) 调用 ::Create_HP_XxxListener() 函数创建监听器对象 (2) 调用 ::Create_HP_Xxx(pListener) 函数创建 HPSocket 对象 (3) 调用 ::HP_Set_FN_Xxx_OnYyy(pListener, ...) 函数设置监听器的回调函数 (4) 调用相关...
1. **事件监听器**:Java中的事件监听是GUI编程中的重要概念,`addXXXListener` 是添加监听器的方法,例如 `addActionListener` 添加动作监听器,而 `XXXListener` 是具体的监听器接口,如 `ActionListener`。...
2. 为事件源对象注册监听器:`事件源对象.addXXXListener(XXXListener);` 3. 实现监听器接口中的方法。如果接口包含多个方法,可以选择继承Adapter类,只重写需要的方法。 例如,处理按钮事件,需要关注`...
`task:scheduler`配置项指定了一个线程池大小为200的调度器,`task:annotation-driven`则允许我们在bean上使用`@Async`和`@Scheduled`注解。 `@Scheduled`注解可以用于标记需要定时执行的方法,如: ```java @...