学习文本框及实现简单的计算器

 

 当我们此时在文本框输入文字的时候显示的是“*”,我在代码里面设置了替换编码,输入内容时不被看见,但是控制台还是能看见的,我们生活中的密码都是采用这种方式实现的。

 

 当我们输入完之后,按下enter键,此时文本框里面的内容被删除,控制台得到输出的内容。

实现代码如下:

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

public class TestText1 {
public static void main(String[] args) {
//启动!
new MyFrame();
}
}
class MyFrame extends Frame{

public MyFrame(){//构造器
TextField textField = new TextField();
add(textField);

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

//设置替换编码,输入密码时不被看见
textField.setEchoChar('*');
setVisible(true);
pack();
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
class MyActionListener2 implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
TextField field = (TextField) e.getSource();//获得一些资源,返回一个对象
System.out.println(field.getText());//获得输入框的文本
field.setText("");//null,回车清空输入框

}
}
===================================================================

 

 此窗口只做了一个简单简单的加法实现,如果要实现一个完整的计算器还需要增加相应的按钮和实现方法等等,比较麻烦需要好好构思一下。

实现代码:

package com.listener;

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

//简易的计算器
public class TestCalc {
public static void main(String[] args) {
new Calculator().loadFrame();
}
}
//计算器类
class Calculator extends Frame {
//属性
TextField num1,num2,num3;
//方法
public void loadFrame(){
num1 = new TextField(10);//字符数
num2 = new TextField(10);//字符数
num3 = new TextField(20);//字符数

Button button = new Button("=");
Label label = new Label("+");

//给button添加一个监听事件
button.addActionListener(new MyCalculatorListener());

//布局
setLayout(new FlowLayout());
add(num1);
add(label);
add(num2);
add(button);
add(num3);

pack();
setVisible(true);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});


}

//监听器类
//内部类最大的好处,就是可以畅通无阻的访问外部的属性和方法!

private class MyCalculatorListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
//1、获得加数和被加数
//2、将这个值和运算后,放到第三个框
//3、清除前面两个框

//因为num此时为char类型,直接getText()取得的值为char类型,所以需要把num转换成int
int n1 = Integer.parseInt(num1.getText());
int n2 = Integer.parseInt(num2.getText());
num3.setText(""+(n1+n2));
num1.setText("");
num2.setText("");

}
}
}
posted @   tuyin  阅读(231)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示