Java学习之路--GUI编程02

package com.gui.lesson02;

import java.awt.*;
import java.awt.event.*;

//2023.3.14 GUI编程--事件监听学习 事件监听---actionListener 生成一个窗口-内置一个按钮--点击按钮输出内容,点击关闭关闭窗口
public class TestActionEvent {
public static void main(String[] args) {
//按下按钮,触发一些事件

Frame frame = new Frame();
Button button = new Button("Button");

//因为,addActionListener()需要一个ActionListener,所以我们需要构造一个ActionListener

MyActionListener myActionListener = new MyActionListener();
button.addActionListener(myActionListener);

frame.add(button,BorderLayout.CENTER);
frame.pack();//自动对齐

windowClose(frame);//调用方法windowClose关闭窗口
frame.setVisible(true);//设置可见性



//1.new 接口 --就要把这个接口的实现类写出来
// button.addActionListener(new ActionListener() {
// @Override
// public void actionPerformed(ActionEvent e) {
//
// }
// });
}
//关闭窗口的事件--关闭窗口需要一个方法
private static void windowClose(Frame frame){
frame.addWindowListener(new WindowAdapter() {

@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});//--这是一个匿名内部类
}
}

//事件监听--事件监听都可以使用actionListener来完成,比如鼠标移到文本框光标会闪烁等等
class MyActionListener implements ActionListener{

@Override
public void actionPerformed(ActionEvent e) {
System.out.println("aaa");//点击按钮会触发什么事件,写在这里面,这里点击按钮会输出aaa
}
}

//
package com.gui.lesson02;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

//2023.3.15 GUI编程 --事件监听学习--多个按钮,共享一个事件
public class TestActionEvent02 {
public static void main(String[] args) {
//两个按钮,实现同一个监听
//一个按钮实现开始,一个按钮实现关闭(停止)
Frame frame = new Frame("开始--停止");
Button button1 = new Button("start");
Button button2 = new Button("stop");

//可以显示的定义触发会返回的命令,如果不显示定义,则会走默认的值
//加上这一句,可以多个按钮,只写一个监听类
button2.setActionCommand("button2-stop");//setActionCommand--设置一个东西(内容写在括号里),下面可以通过e调用getActionCommand()这个方法得到设置的东西

MyMonitor myMonitor = new MyMonitor();//monitor--监听,监测
button1.addActionListener(myMonitor);
button2.addActionListener(myMonitor);

frame.add(button1,BorderLayout.NORTH);//东西南北中 --BorderLayout ,将两个按钮放进窗口里,采用东西南北中布局,一个按钮在上,一个按钮在下
frame.add(button2,BorderLayout.SOUTH);

frame.pack();//自适应
frame.setVisible(true);//设置可见性
WindowClose(frame);//关闭窗口
}

//关闭窗口的方法
private static void WindowClose(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) {
//e.getActionCommand--获得按钮的信息
System.out.println("按钮被点击了:msg" + e.getActionCommand());
}
}

//
package com.gui.lesson02;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

//2023.3.16 GUI编程 ---简易计算器的生成实现 Calculator--计算器 方法1
public class TestCalculator {
public static void main(String[] args) {
new Calculator();//启动,调用计算器类
}
}

//计算器类
class Calculator extends Frame{
//构造器
public Calculator(){
//计算器需要3个文本框
TextField num1 = new TextField(10);//文本框可以输入的字符数--计算器的第一个输入的文本框 5*5=11
TextField num2 = new TextField(10);//文本框可以输入的字符数--计算器的第二个输入的文本框
TextField num3 = new TextField(20);//文本框可以输入的字符数--计算器输出结果的文本框

//1个按钮
Button button = new Button("=");//计算器的 = 号
button.addActionListener(new MyCalculatorListener(num1,num2,num3));//加上这一句是为了给按钮 = 绑定监听事件 点击 按钮(=)时输出计算的数值
//不加这一句的话点击 按钮(=)不起作用,不会输出

//1个标签
Label label = new Label("+");//计算器的运算符号 取的是 +

//布局
setLayout(new FlowLayout());//流式布局

add(num1);//这里要按照顺序一个一个添加
add(label);
add(num2);
add(button);
add(num3);

pack();//自适应
setVisible(true);//设置可见性
}
}

//监听器类
class MyCalculatorListener implements ActionListener{
private TextField num1;
private TextField num2;
private TextField num3;

//获取三个变量(num1、num2、num3)
public MyCalculatorListener(TextField num1, TextField num2, TextField num3){
this.num1 = num1;
this.num2 = num2;
this.num3 = num3;
}

@Override
public void actionPerformed(ActionEvent e) {
//1. 获得加数和被加数
int n1 = Integer.parseInt(num1.getText());//num1.getText()--得到的文本框 是String类型的,要把这个转换成int类型的才可以用,字符串不能加减哦!用Integer来转换
int n2 = Integer.parseInt(num2.getText());

//2. 将这个值 + 法运算后,放到第三个值
num3.setText("" + (n1 + n2));//num3 设置num3 是第一个数num1 加第二个数num2的和,num3.setText("" + (n1 + n2));--暴力方法拼接n1+n2

//3,清除前两个框
num1.setText("");//设置num1计算后文本框清空
num2.setText("");//设置num1计算后文本框清空
}
}

//
package com.gui.lesson02;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

//2023.3.16 GUI编程 ---简易计算器的生成实现 Calculator--计算器 方法1
public class TestCalculator {
public static void main(String[] args) {
new Calculator();//启动,调用计算器类
}
}

//计算器类
class Calculator extends Frame{
//构造器
public Calculator(){
//计算器需要3个文本框
TextField num1 = new TextField(10);//文本框可以输入的字符数--计算器的第一个输入的文本框 5*5=11
TextField num2 = new TextField(10);//文本框可以输入的字符数--计算器的第二个输入的文本框
TextField num3 = new TextField(20);//文本框可以输入的字符数--计算器输出结果的文本框

//1个按钮
Button button = new Button("=");//计算器的 = 号
button.addActionListener(new MyCalculatorListener(num1,num2,num3));//加上这一句是为了给按钮 = 绑定监听事件 点击 按钮(=)时输出计算的数值
//不加这一句的话点击 按钮(=)不起作用,不会输出

//1个标签
Label label = new Label("+");//计算器的运算符号 取的是 +

//布局
setLayout(new FlowLayout());//流式布局

add(num1);//这里要按照顺序一个一个添加
add(label);
add(num2);
add(button);
add(num3);

pack();//自适应
setVisible(true);//设置可见性
}
}

//监听器类
class MyCalculatorListener implements ActionListener{
private TextField num1;
private TextField num2;
private TextField num3;

//获取三个变量(num1、num2、num3)
public MyCalculatorListener(TextField num1, TextField num2, TextField num3){
this.num1 = num1;
this.num2 = num2;
this.num3 = num3;
}

@Override
public void actionPerformed(ActionEvent e) {
//1. 获得加数和被加数
int n1 = Integer.parseInt(num1.getText());//num1.getText()--得到的文本框 是String类型的,要把这个转换成int类型的才可以用,字符串不能加减哦!用Integer来转换
int n2 = Integer.parseInt(num2.getText());

//2. 将这个值 + 法运算后,放到第三个值
num3.setText("" + (n1 + n2));//num3 设置num3 是第一个数num1 加第二个数num2的和,num3.setText("" + (n1 + n2));--暴力方法拼接n1+n2

//3,清除前两个框
num1.setText("");//设置num1计算后文本框清空
num2.setText("");//设置num1计算后文本框清空
}
}

//
package com.gui.lesson02;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

////2023.3.17 GUI编程 -- 简易计算器的实现 方法3--采用内部类对方法2的代码优化
public class TestCalculator2 {
public static void main(String[] args) {
//启动计算器
new Calculator2().loadFrame();//调用Calculator2的loadFrame()
}
}

//计算器类
class Calculator2 extends Frame {
//定义属性
TextField num1;
TextField num2;
TextField num3;
//方法 写这个方法来加载 Frame
public void loadFrame(){
num1 = new TextField(10);//括号里的是这个文本框能输入的最大字符数
num2 = new TextField(10);
num3 = new TextField(20);
Button button = new Button("=");//括号里的是按钮名称
Label label = new Label("+");//标签上是一个 + 号

button.addActionListener(new MyCalculatorListener2());//加上这一句是为了给按钮 = 绑定监听事件 点击 按钮(=)时输出计算的数值,
// new MyCalculatorListener2()--括号里直接new监听类是因为这个监听类作为Calculator的内部类了

//布局 --流式布局
setLayout(new FlowLayout());
add(num1);//采用布局将各个模块放进去
add(label);
add(num2);
add(button);
add(num3);
pack();//自适应
setVisible(true);//设置可见性
}

//监听器类
//内部类最大的好处就是可以畅通无阻的访问外部类的属性和方法,降低一些编码成本
private class MyCalculatorListener2 implements ActionListener {

@Override
public void actionPerformed(ActionEvent e) {
//1. 获得加数和被加数
//2. 将这个值 + 法运算后,放到第三个框里
//3,清除前两个框
int n1 = Integer.parseInt(num1.getText());
int n2 = Integer.parseInt(num2.getText());
num3.setText("" + (n1+n2));
num1.setText("");
num2.setText("");
}
}
}

//
package com.gui.lesson02;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

//2023.3.16 GUI编程 --文本框的简单使用学习 生成一个窗口,加入一个文本框,监听事件--文本框输入的内容
public class TestText01 {
public static void main(String[] args) {
//启动!
new MyFrame();
}
}

//实现监听事件的类
class MyFrame extends Frame{
//构造器
public MyFrame(){
TextField textField = new TextField();// TextField--文本输入框
add(textField);

//监听这个文本框输入的文字
MyActionListener2 myActionListener2 = new MyActionListener2();
//按下enter 就会触发这个输入框的事件
textField.addActionListener(myActionListener2);//监听这个文本

textField.setEchoChar('*');//设置替换编码--启动程序在文本框输内容会被 * 替换(这里的替换不是替换输入的实际内容),是起到一个隐藏内容的作用,比如qq,微信输密码被 * 替换一样,后台可以看到,前台看不到,保证安全性
setVisible(true);//设置可见性
pack();//自适应
}
}

//监听类
class MyActionListener2 implements ActionListener{

@Override
public void actionPerformed(ActionEvent e) {
TextField field = (TextField) e.getSource();//getSource()获得一些资源,TextField field = (TextField) e.getSource();--强转-向下转型
System.out.println(field.getText());//获得输入框中的文本,再输出一下
field.setText("");//设置文本框输入内容时点击回车enter内容清空
}
}
//
package com.gui.lesson02;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

//2023.3.16 GUI编程 --文本框的简单使用学习 生成一个窗口,加入一个文本框,监听事件--文本框输入的内容
public class TestText01 {
public static void main(String[] args) {
//启动!
new MyFrame();
}
}

//实现监听事件的类
class MyFrame extends Frame{
//构造器
public MyFrame(){
TextField textField = new TextField();// TextField--文本输入框
add(textField);

//监听这个文本框输入的文字
MyActionListener2 myActionListener2 = new MyActionListener2();
//按下enter 就会触发这个输入框的事件
textField.addActionListener(myActionListener2);//监听这个文本

textField.setEchoChar('*');//设置替换编码--启动程序在文本框输内容会被 * 替换(这里的替换不是替换输入的实际内容),是起到一个隐藏内容的作用,比如qq,微信输密码被 * 替换一样,后台可以看到,前台看不到,保证安全性
setVisible(true);//设置可见性
pack();//自适应
}
}

//监听类
class MyActionListener2 implements ActionListener{

@Override
public void actionPerformed(ActionEvent e) {
TextField field = (TextField) e.getSource();//getSource()获得一些资源,TextField field = (TextField) e.getSource();--强转-向下转型
System.out.println(field.getText());//获得输入框中的文本,再输出一下
field.setText("");//设置文本框输入内容时点击回车enter内容清空
}
}
//
package com.gui.lesson02;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

//2023.3.16 GUI编程 --文本框的简单使用学习 生成一个窗口,加入一个文本框,监听事件--文本框输入的内容
public class TestText01 {
public static void main(String[] args) {
//启动!
new MyFrame();
}
}

//实现监听事件的类
class MyFrame extends Frame{
//构造器
public MyFrame(){
TextField textField = new TextField();// TextField--文本输入框
add(textField);

//监听这个文本框输入的文字
MyActionListener2 myActionListener2 = new MyActionListener2();
//按下enter 就会触发这个输入框的事件
textField.addActionListener(myActionListener2);//监听这个文本

textField.setEchoChar('*');//设置替换编码--启动程序在文本框输内容会被 * 替换(这里的替换不是替换输入的实际内容),是起到一个隐藏内容的作用,比如qq,微信输密码被 * 替换一样,后台可以看到,前台看不到,保证安全性
setVisible(true);//设置可见性
pack();//自适应
}
}

//监听类
class MyActionListener2 implements ActionListener{

@Override
public void actionPerformed(ActionEvent e) {
TextField field = (TextField) e.getSource();//getSource()获得一些资源,TextField field = (TextField) e.getSource();--强转-向下转型
System.out.println(field.getText());//获得输入框中的文本,再输出一下
field.setText("");//设置文本框输入内容时点击回车enter内容清空
}
}

__EOF__

本文作者CaiDingChao
本文链接https://www.cnblogs.com/CaiDingChao/p/17718024.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   寂灭无言  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示