java的gui位置怎么算_Java - GUI界面实现简单计算器

一、功能介绍

(1)实现基本的加减乘除功能。

(2)使用匿名类为加减乘除按键设置监听器 。

(3)监听器的基本应用。

学习了GUI界面,没用具体的应用,在这里简单的编写一个计算器的应用。

二、代码实现

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.ArrayList;

import java.util.List;

import javax.swing.*;

import java.awt.*;

import java.util.ArrayList;

import java.util.List;

public class example10 {

private static void createAndShowGUI()

{

//创建一个顶级容器

JFrame jFrame=new JFrame("计算器");

jFrame.setLayout(new BorderLayout());

//设置容器大小

jFrame.setSize(250,300);

//用来显示相对于界面的位置

jFrame.setLocation(400,400);

//创建一个网格式面板,并添加到容器里边

JPanel jPanel=new JPanel(new GridLayout(4,4,10,25));

JPanel jPanel1=new JPanel(new FlowLayout(FlowLayout.CENTER,10,25));

//创建一个文本框显示界面

JTextField jTextField=new JTextField(20);

//用来记录用户所输入的数字和字符串

List lists=new ArrayList();

jPanel.add(jTextField);

String [] strings=new String[] {"1","2","3","+","4","5","6","-","7","8","9","*",

".","0","=","/"};

String [] st=new String[]{"AC","BECK","CE"};

//添加按键 AC CE BECK

JButton AC=new JButton(st[0]);

JButton Beck=new JButton(st[1]);

JButton CE=new JButton(st[2]);

//将上边三个按键添加到面板上

jPanel1.add(AC);

jPanel1.add(Beck);

jPanel1.add(CE);

//添加按钮 "1","2","3","+","4","5","6","-","7","8","9","*",".","0","=","/"

JButton jButton1=new JButton(strings[0]);

JButton jButton2=new JButton(strings[1]);

JButton jButton3=new JButton(strings[2]);

JButton add=new JButton(strings[3]);

JButton jButton4=new JButton(strings[4]);

JButton jButton5=new JButton(strings[5]);

JButton jButton6=new JButton(strings[6]);

JButton sum=new JButton(strings[7]);

JButton jButton7=new JButton(strings[8]);

JButton jButton8=new JButton(strings[9]);

JButton jButton9=new JButton(strings[10]);

JButton ChenFa=new JButton(strings[11]);

JButton Point=new JButton(strings[12]);

JButton jButton0=new JButton(strings[13]);

JButton result=new JButton(strings[14]);

JButton ChuFa=new JButton(strings[15]);

//将按键添加到面板上

jPanel.add(jButton1);

jPanel.add(jButton2);

jPanel.add(jButton3);

jPanel.add(add);

jPanel.add(jButton4);

jPanel.add(jButton5);

jPanel.add(jButton6);

jPanel.add(sum);

jPanel.add(jButton7);

jPanel.add(jButton8);

jPanel.add(jButton9);

jPanel.add(ChenFa);

jPanel.add(Point);

jPanel.add(jButton0);

jPanel.add(result);

jPanel.add(ChuFa);

//将面板加到容器里边

jFrame.add(jTextField,BorderLayout.PAGE_START);

jFrame.add(jPanel1,BorderLayout.CENTER);

jFrame.add(jPanel,BorderLayout.PAGE_END);

jFrame.setVisible(true);

jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//添加监听器

//添加AC监听器

AC.addActionListener(e->{

lists.clear();

jTextField.setText("");

});

//添加Beck监听器

Beck.addActionListener(e->{

String text=jTextField.getText();//得到输入文本框

//如果文本框的内容是空或者长度是一,直接将文本框的内容设置为空

if("".equals(text)||text.length()==1)

{

jTextField.setText("");

return ;

}

//如果文本的长度大于1就要向前截取

if(text.length()>1)

{

text=text.substring(0,text.length()-1);

jTextField.setText(text);

}

});

//添加CE监听器

CE.addActionListener(e->{

String text=jTextField.getText();

if("".equals(text))

{

return ;

}

//将加减乘除移除,防止出现错误

if("+".equals(text)||"-".equals(text)||"*".equals(text)||"/".equals(text))

{

lists.remove(0);

}

//直接将文本框清空

jTextField.setText("");

});

//添加数字按键的监听器 使用匿名类 然后再用匿名类创建数字按键的监听器

ActionListener actionListener=new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

//得到文本框内容

String text=jTextField.getText();

//除数不能为0 ,如果有,点击数字键就会消失

if("除数不为0".equals(text))

{

jTextField.setText(e.getActionCommand());

return ;

}

//如果是0,只能输入小数点

if("0".equals(text))

{

return ;

}

//如果文本域是空,就把当前点击的按键 添加入文本框中

if("".equals(text))

{

jTextField.setText(e.getActionCommand());

}

else

{

//如果当前文本框有数据,并且是 运算符 记录运算符

if(text.equals("+")||text.equals("-")||text.equals("*")||text.equals("/"))

{

//记录下运算符,并且将文本框设置为空

lists.add(text);

jTextField.setText("");

//将文本框中的数字设置为0

text="";

}

text+=e.getActionCommand();

jTextField.setText(text);

}

}

};

//为数字设置监听器

jButton1.addActionListener(actionListener);

jButton2.addActionListener(actionListener);

jButton3.addActionListener(actionListener);

jButton4.addActionListener(actionListener);

jButton5.addActionListener(actionListener);

jButton6.addActionListener(actionListener);

jButton7.addActionListener(actionListener);

jButton8.addActionListener(actionListener);

jButton9.addActionListener(actionListener);

//为 0 按键设置监听器

jButton0.addActionListener(e->{

String text=jTextField.getText();

//如果是 0 就不可以再为 0

if("0".equals(text))

{

return ;

}

//如果是运算符 记录下运算符

if("+".equals(text)||"-".equals(text)||"*".equals(text)||"/".equals(text))

{

lists.add(text);

text="";

}

text+=e.getActionCommand();

jTextField.setText(text);

});

//为小数点设置监听器

Point.addActionListener(e->{

String text=jTextField.getText();

if("".equals(text))

{

return ;

}

//判断是否是运算符

if("+".equals(text)||"-".equals(text)||"*".equals(text)||"/".equals(text))

{

return ;

}

//数字后边不能同时出现两个小数点

if(text.contains("."))

{

return ;

}

text+=e.getActionCommand();

jTextField.setText(text);

});

//为加减乘除按键设置监听器 使用匿名类

ActionListener actionListener1=new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

String text=jTextField.getText();

if("".equals(text))

{

return ;

}

if("+".equals(text)||"-".equals(text)||"*".equals(text)||"/".equals(text))

{

return ;

}

//将内容添加到集合里边

lists.add(text);

//将文本框清空

jTextField.setText("");

//获取按键上边的数字

jTextField.setText(e.getActionCommand());

}

};

//为加减乘除设置监听器

sum.addActionListener(actionListener1);

add.addActionListener(actionListener1);

ChenFa.addActionListener(actionListener1);

ChuFa.addActionListener(actionListener1);

//为 = 添加监听器

ActionListener actionListener2=new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

//判断集合数据

if(lists.isEmpty())

{

return ;

}

String text=jTextField.getText();

if("+".equals(text)||"-".equals(text)||"*".equals(text)||"/".equals(text))

{

return ;

}

//将其添加在集合里边

lists.add(text);

if(lists.size()<3)

{

return ;

}

String one=lists.get(0);//获取集合的第一个数

String two=lists.get(1);//获取集合的第二个数

String three=lists.get(2);//获取集合的第三个数

switch (two)

{

case "+":

//Double类中本来就有个方法parseDouble() ,作用是把字符串转换为Double。

double i=Double.parseDouble(one);

double j=Double.parseDouble(three);

jTextField.setText((i+j)+"");

break ;

case "-":

double x=Double.parseDouble(one);

double y=Double.parseDouble(three);

jTextField.setText((x-y)+"");

break;

case "*":

double m=Double.parseDouble(one);

double n=Double.parseDouble(three);

jTextField.setText((m*n)+"");

break;

case "/":

double k=Double.parseDouble(one);

double z=Double.parseDouble(three);

if(z==0)

{

jTextField.setText("除数不为0");

lists.clear();

return ;

}

jTextField.setText((k/z)+"");

break;

}

//将集合清空

lists.clear();

}

};

//为等号添加监听器

result.addActionListener(actionListener2);

}

public static void main(String[] args) {

SwingUtilities.invokeLater(example10::createAndShowGUI);

}

}

三、显示界面

(1)运行结果(4*5的运算结果)

4859942bdfa808d98f57fcadeabe568b.png

b3940742856289cc4a9da164cd803ac8.png

de638df49f1d5a3342eecff86bcb011e.png

一只小小的蚂蚁

发布了54 篇原创文章 · 获赞 3 · 访问量 3401

私信

关注

标签:Java,text,GUI,equals,add,计算器,new,JButton,jTextField

来源: https://blog.csdn.net/qq_44863179/article/details/104619344

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值