输入监听
文本框 ——TextFiled(添加在弹窗Frame里)——只允许编辑单行文本
- 构造方法:
TextFiled()——构造新文本字段
TextField(int columns) ——构造具有指定列数( 近似平均字符宽度 ) 的新空文本字段 - 成员方法:
setText(String t)—— 将此文本组件显示的文本设置为指定文本
setEchoChar(’*’)——替换弹窗中输入的文本
setText("")——后台获取完文本之后 清除弹窗里文本
getText()——获取此文本组件显示的文本信息
需求:在弹窗输入密码 在后台接收
public class WenBenListenerDemo {
public static void main(String[] args) {
new MyFrameDemo();
}
}
class MyFrameDemo extends Frame { // 相当于一个Frame类
public MyFrameDemo() {
TextField textField = new TextField();--- 创建一个文本框 TextField类表示文本框
add(textField); ----- 在窗口中添加文本框
MyListener3 myListener3 = new MyListener3(); -------摁下enter 则触发这个输入框的事件
textField.addActionListener(myListener3); ------- 在文本上装一个监听器 监听文本框输入的文字
textField.setEchoChar('*'); ------ 设置替换编码
setVisible(true);
pack();
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.out.println("事件结束了");
System.exit(0);
}
});
}
}
class MyListener3 implements ActionListener{ // 监听器
@Override
public void actionPerformed(ActionEvent e) {
TextField field = (TextField) e.getSource(); ------- 获取文本文件的内容 返回一个对象
System.out.println(field.getText()); ------getText()获取此文本组件显示的文本-输出
field.setText(""); ------- 获得完以后 文本框里面为空
}
}
需求:制作一个简易计算器
public class CalculatorDemo {
public static void main(String[] args) {
new MyCalculator();
}
}
class MyCalculator extends Frame{
public MyCalculator(){
setTitle("ZY的计算器"); // 设置标题
/// 需要三个文本框——输入数字
TextField num1 = new TextField(10);
TextField num2 = new TextField(10);
TextField sum = new TextField(20);
// 需要一个按钮“=”——控制结果
Button button = new Button("=");
button.addActionListener(new MyListener4(num1,num2,sum)); // 在"="上装一个监听器
// 需要一个标签“+”——装饰
Label label = new Label("+");
setLayout(new FlowLayout()); // 流式布局
add(num1);
add(label);
add(num2);
add(button);
add(sum);
setVisible(true);
pack();
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.out.println("事件结束了");
System.exit(0);
}
});
}
}
class MyListener4 implements ActionListener{
private TextField num1,num2,sum; // 获取三个变量
public MyListener4(TextField num1,TextField num2,TextField sum){
this.num1 = num1;
this.num2 = num2;
this.sum = sum;
}
@Override
public void actionPerformed(ActionEvent e) {
// 获得num1和num2
int n1 = Integer.parseInt(num1.getText());//num1.getText()获取的是文本
int n2 = Integer.parseInt(num2.getText()); // 用Integer.parseInt()转换成Integer类型
// 进行加法运算 结果放进第三个框
sum.setText(""+(n1+n2));
// 清除前两个框里的文本
num2.setText("");
num1.setText("");
}
}
画笔绘图
- 重写Frame里方法:public void paint(Graphics g) ———设置画笔
- 成员方法:
g.setColor(Color.black)————设置画笔颜色
需求:画一个黑实心圆一个红空心正方形
public class PaintPenDemo {
public static void main(String[] args) {
new MyPaintPen().loadFrame();
}
}
class MyPaintPen extends Frame{
public void loadFrame() {
setTitle("ZY的小画板");
setBounds(200,200,700,700);
setVisible(true);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
@Override
public void paint(Graphics g) { -----设置画笔
g.setColor(Color.black);
//g.drawOval(100,100,100,100);// 空心圆
g.fillOval(100,100,100,100);// 实心圆
g.setColor(Color.red);
g.drawRect(200,200,300,300);
}
}
鼠标监听
MouseEvent鼠标事件:用户使用鼠标进行选择 切换页面等操作 包括鼠标摁下 松开 单击
类Point——表示 (x,y) 坐标空间中的位置的点,以整数精度指定
repaint()——刷新画笔
需求:用鼠标在窗口上画蓝色小正方形
- 鼠标事件——使用户能够跟踪鼠标何时被按下、释放、单击、移动、拖动、何时进入一个组件、何时退出、何时滚动鼠标滚轮。
- MyListener5本来应该实现MouseListener接口因为需要重写的方法太多 所以换成它的实现类 MouseAdapter——只重写mousePressed方法
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.Iterator;
public class MouseDemo {
public static void main(String[] args) {
new MyDrawFrame("ZY的小画板2");
}
}
class MyDrawFrame extends Frame {
ArrayList points; ——————用集合points储存鼠标画下的点
public MyDrawFrame(String title) {
super(title); //new Frame(title);super是Frame的对象
setBounds(300, 300, 400, 400);
setVisible(true);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
points = new ArrayList(); ——————定义一个集合存放点
addMouseListener(new MyListener5()); ——————对这个窗口装一个监听器
}
public void addPonit(Point point){
points.add(point); ——————————把出现的点的集合放进集合Points中
}
————————如何出现点:用画笔 画
@Override
public void paint(Graphics g) { // 画画
Iterator iterator = points.iterator();
while (iterator.hasNext()){
Point point = (Point) iterator.next(); // 用Point接收
g.setColor(Color.blue);
g.fillRect(point.x,point.y,10,10);
}
}
private class MyListener5 extends MouseAdapter {
@Override
public void mousePressed(MouseEvent e) {
MyDrawFrame myDrawFrame = (MyDrawFrame) e.getSource();
——————————————鼠标点击一个 在窗口上画一个点
myDrawFrame.addPonit(new Point(e.getX(),e.getY())); ——————把点的坐标存进集合Points中
myDrawFrame.repaint(); —————————— 每次点击完鼠标刷新一下
}
}
}
窗口监听
WindowAdapter——如果要实现 WindowListener 接口,则必须定义该接口内的所有方法。此抽象类将所有方法都定义为 null,所以只需针对关心的事件定义方法
- 构造方法
void windowActivated(WindowEvent e) —— 激活窗口时调用
void windowClosing(WindowEvent e) ——窗口正处在关闭过程中时调用
public class WindowDemo {
public static void main(String[] args) {
new MyWindowTest();
}
}
class MyWindowTest extends Frame {
public MyWindowTest(){
setBackground(Color.red);
setBounds(500,200,300,300);
setVisible(true);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.out.println("窗口关闭了!");
System.exit(0);
}
@Override
public void windowActivated(WindowEvent e) {
MyWindowTest myWindowTest = (MyWindowTest) e.getSource();
myWindowTest.setTitle("窗口被激活了");
System.out.println("窗口开启");
}
});
}
}
键盘监听
KeyEvent键盘事件:用户使用键盘摁下 释放
WindowAdapter——接收键盘事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建侦听器对象。
- 如果要实现 KeyListener 接口,则必须定义该接口内的所有方法。此抽象类将所有方法都定义为 null,所以只需针对关心的事件定义方法
- 成员方法:
void keyPressed(KeyEvent e) ——按下某个键时调用此方法。
void keyReleased(KeyEvent e) ——释放某个键时调用此方法。
KeyEvent ——表示组件中发生键击的事件
- 当按下、释放或键入某个键时,组件对象(如文本字段)将生成此低级别事件。该事件被传递给每一个 KeyListener 或 KeyAdapter 对象,这些对象使用组件的 addKeyListener 方法注册,以接收此类事件。发生事件时,所有此类侦听器对象都将获得此 KeyEvent。
- “按下键”和“释放键” 事件 是低级别事件,依赖于平台和键盘布局。只要按下或释放键就生成这些事件,它们是发现不生成字符输入的键(如动作键、修改键等等)的惟一方式 通过 getKeyCode 方法可指出按下或释放的键,该方法返回一个虚拟键码
public class KeyDemo {
public static void main(String[] args) {
new MyKeyTest();
}
}
class MyKeyTest extends Frame {
public MyKeyTest(){
setBounds(200,200,400,400);
setVisible(true);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
System.out.println(keyCode);
if(keyCode == KeyEvent.VK_UP){
System.out.println("你摁下了up键");
}
if(keyCode == KeyEvent.VK_DOWN){
System.out.println("你摁下了down键");
}
}
});
}
}