java开发简单的基于java Swing图形组件的计算器(四则运算)

您所在的位置:网站首页 利用gui设计计算器的软件 java开发简单的基于java Swing图形组件的计算器(四则运算)

java开发简单的基于java Swing图形组件的计算器(四则运算)

2024-06-03 19:50| 来源: 网络整理| 查看: 265

 

练习:

使用 Java 语言完成了一个简单的图形界面计算器(使用Java Swing 图形组件)。此小项目练习能够让大家深入学习如何制作 Swing 图形化界面以及为 UI 组件设置事件响应逻辑。项目难度为一般,属于初级项目,适合具有Java基础和Swing组件编程知识的用户学习练习。

开发环境:

window10系统

ideaIU-2018.1.4

JDK1.8

开发步骤: 创建普通Java项目(引入版本为1.8的jdk)UI组件的创建和初始化在窗体中添加UI组件添加事件响应逻辑计算逻辑的实现 开发代码: import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; /** * @author XXX * @date 2019/9/17 **/ public class Calculator extends JFrame{ //定义JTextField 显示的字符串 String string = new String(); public Calculator(){ // 创建一个 Container 容器并初始化。 Container container=getContentPane(); //设置容器布局:网格布局样式,5行1列,水平间距50,垂直间距10 container.setLayout(new GridLayout(5,1,50,10)); // 创建一个 JTextField 对象并初始化。 JTextField 是用于显示操作和计算结果的文本框。 // 参数 26 表明可以显示 26 列的文本内容 JTextField result_TextField = new JTextField(26); //把字符串赋值给文本框 result_TextField.setText(string); //创建一个带文本的按钮-->清除键 JButton clear_Button = new JButton(" clear "); //给按钮添加事件监听器 clear_Button.addActionListener(clearButtonListener(result_TextField)); //数字键0到9 JButton button0 = new JButton("0"); button0.addActionListener(numbersAndOperatorsListener(result_TextField)); JButton button1 = new JButton("1"); button1.addActionListener(numbersAndOperatorsListener(result_TextField)); JButton button2 = new JButton("2"); button2.addActionListener(numbersAndOperatorsListener(result_TextField)); JButton button3 = new JButton("3"); button3.addActionListener(numbersAndOperatorsListener(result_TextField)); JButton button4 = new JButton("4"); button4.addActionListener(numbersAndOperatorsListener(result_TextField)); JButton button5 = new JButton("5"); button5.addActionListener(numbersAndOperatorsListener(result_TextField)); JButton button6 = new JButton("6"); button6.addActionListener(numbersAndOperatorsListener(result_TextField)); JButton button7 = new JButton("7"); button7.addActionListener(numbersAndOperatorsListener(result_TextField)); JButton button8 = new JButton("8"); button8.addActionListener(numbersAndOperatorsListener(result_TextField)); JButton button9 = new JButton("9"); button9.addActionListener(numbersAndOperatorsListener(result_TextField)); //计算命令按钮 加减乘除以及小数点等 //小数点 JButton button_spot = new JButton("."); button_spot.addActionListener(numbersAndOperatorsListener(result_TextField)); //加 JButton button_add = new JButton("+"); button_add.addActionListener(numbersAndOperatorsListener(result_TextField)); //减 JButton button_subtract = new JButton("-"); button_subtract.addActionListener(numbersAndOperatorsListener(result_TextField)); //乘 JButton button_multiply = new JButton("*"); button_multiply.addActionListener(numbersAndOperatorsListener(result_TextField)); //除 JButton button_divide = new JButton("/"); button_divide.addActionListener(numbersAndOperatorsListener(result_TextField)); //等于 JButton button_equal = new JButton("="); button_equal.addActionListener(equalButtonListener(result_TextField)); //创建JPanel面板组件并且采用 BorderLayout布局格式 JPanel panel = new JPanel(new BorderLayout()); //在面板中添加文本框组件-->靠左 panel.add(result_TextField,BorderLayout.WEST); //在面板中添加文本框组件-->靠右 panel.add(clear_Button, BorderLayout.EAST); JPanel pan1 = new JPanel(new GridLayout(1,4,5,5)); pan1.add(button7); pan1.add(button8); pan1.add(button9); pan1.add(button_divide); JPanel pan2 = new JPanel(new GridLayout(1,4,5,5)); pan2.add(button4); pan2.add(button5); pan2.add(button6); pan2.add(button_multiply); JPanel pan3 = new JPanel(new GridLayout(1,4,5,5)); pan3.add(button1); pan3.add(button2); pan3.add(button3); pan3.add(button_subtract); JPanel pan4 = new JPanel(new GridLayout(1,4,5,5)); pan4.add(button0); pan4.add(button_spot); pan4.add(button_equal); pan4.add(button_add); //在容器上添加面板控件 container.add(panel); container.add(pan1); container.add(pan2); container.add(pan3); container.add(pan4); //将容器外部特性实例化 setTitle(" Calculator "); //设窗体的大小 宽和高 setSize(400,250); //设定窗体的可视化 setVisible(true); //设置窗体的关闭方式 setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } //数字和运算符监听事件 public ActionListener numbersAndOperatorsListener(JTextField result_TextField ){ return new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { JButton jButton = (JButton) e.getSource(); System.out.println("获取事件监听器:"+jButton.getText()); string += jButton.getText(); result_TextField.setText(string); } }; } //使用JDK自带的类可以实现执行字符串中的运算公式的功能 static ScriptEngine javaScriptEngine = new ScriptEngineManager().getEngineByName("JavaScript"); //等于运算 public ActionListener equalButtonListener(JTextField result_TextField){ return new ActionListener() { String str =null; @Override public void actionPerformed(ActionEvent e) { System.out.println("result_TextField -->"+ result_TextField.getText()); str = result_TextField.getText(); string = equal(str); result_TextField.setText(string); } public String equal(String str){ String result =""; try { System.out.println(javaScriptEngine.eval(str)); result = javaScriptEngine.eval(str).toString(); } catch (Exception t) { } return result; } }; } //清除文本框的内容 public ActionListener clearButtonListener(JTextField result_TextField){ return new ActionListener() { @Override public void actionPerformed(ActionEvent e) { string = ""; result_TextField.setText(string); } }; } public static void main(String[] args) { Calculator calculator = new Calculator(); } } 计算器界面实现 计算器界面

 

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3