java超简单计算器_Java实验--超级简单的计算器

学了Java的GUI后,做了个super简单的计算器,只能做加法。(萌新日常记录,大佬发现有什么问题欢迎评论区留言)

都是很简单的知识,其中主要涉及GridLayout布局的应用、添加监听器、两个控件、还有响应事件、内部类…

详细代码如下:

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

@SuppressWarnings("serial")

public class CalculatorInWindow extends JFrame {

JButton button;

JButton button1;

JTextField text1;

JTextField text2;

JTextArea text3;

ReaderListen listener;

public CalculatorInWindow() {

init();

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

void init() {

setLayout(new GridLayout(3,3)); //使用GridLayout布局生成3x3的网格状布局

listener=new ReaderListen();

add(new JLabel("加数1")); //添加便签

text1=new JTextField();

text1.addActionListener(listener); //添加监听器监听texe1

add(new JScrollPane(text1)); //在文本框添加滚动条,并将文本框添加到窗口

add(new JLabel("")); //添加空白的便签,填充右边空白区域

add(new JLabel("加数2"));

text2=new JTextField();

text2.addActionListener(listener); //添加监听器监听texe2

add(new JScrollPane(text2));

add(new JLabel(""));

button=new JButton("求和");

button.addActionListener(listener); //添加监听器监听button

add(button);

text3=new JTextArea();

add(new JScrollPane(text3));

button1=new JButton("清空");

button1.addActionListener(listener); //添加监听器监听button1

add(button1);

}

class ReaderListen implements ActionListener{ //内部类实现事件处理简化过程

public void actionPerformed(ActionEvent e) {

//由于上面只用一个监听器监听所有的控件,所以接下来进行监听器监听到的事件进行分类处理

//利用getSource()函数获取事件源对象的引用,然后用equals()函数判断是否与将要处理的对象相等。

if(e.getSource().equals(text1)){

text1.transferFocus(); //对文本框1回车进行光标下移处理

}

else if(e.getSource().equals(button)||e.getSource().equals(text2)) { //对文本框2和求和按钮事件进行处理

String str1=text1.getText(); //获取文本框1和2的内容

String str2=text2.getText();

try { //对于在文本框1和文本框2输入非数字进行异常处理

double x1 = Double.parseDouble(str1); //对文本框1和文本框2数字以字符串的形式转换成double类型

double x2 = Double.parseDouble(str2);

text3.setText(null); //将文本框3置空,防止进行多次求和按钮后在文本框3的结果叠加。

text3.append(String.valueOf(x1+x2));

}catch (Exception e1) { //对输入非数字按求和进行提醒

JOptionPane.showMessageDialog(null, "没输入数字或者输入的数字中含有非法字符,请重新输入", "数据错误", JOptionPane.ERROR_MESSAGE);

}

}

else if(e.getSource().equals(button1)) { //对清空按钮实现置空

text1.setText(null);

text2.setText(null);

text3.setText(null);

}

}

}

}

public class Text {

public static void main(String args[]) {

CalculatorInWindow cal=new CalculatorInWindow();

cal.setBounds(300,350,310,260); //设置窗口大小和初始位置

cal.setTitle("计算器"); //设置窗口标题

}

}

文中已经有大量的说明,我就不再这唠叨了。

至于结果嘛,运行就知道啦(运行后别回来骂我鸭

(由于个别原因,代码中用了大量的注释,请不要模仿)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值