Java实现图形界面计算器(简易版)

您所在的位置:网站首页 小孩子做飞天神爪简易版图片 Java实现图形界面计算器(简易版)

Java实现图形界面计算器(简易版)

2024-07-10 19:20| 来源: 网络整理| 查看: 265

        经过一个月的Java学习,听说Java中的第一个小型程序好多都做的是计算器,今天我也来做做吧,把这一个月学习的知识简单的综合一下,熟练近期学习的知识点。

        我做的计算器如下图:

功能:对实数进行加、减、乘、除、余操作。

界面设置:首先设置一个窗体,一个菜单条,三个菜单项(无功能),三个标签(作为显示数据的地方,第一个标签作为提示作用,第二个标签作为输入数据作用,第三个标签显示结果作用),20个按钮(循环进行添加),两个面板(把三个标签添加到第一个面板里,把20个按钮添加到第二个面板里,用网格布局,这样做不易位置错乱),再把两个面板添加到窗体中就OK了。

下面是完整代码,在一个类中,注释非常详细。

package day7_29; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.Dimension; import java.awt.Font; import java.awt.GridLayout; import java.awt.SystemColor; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.NumberFormat; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JPanel; import javax.swing.border.BevelBorder; public class Caculate { // 对计算器整体框架的建立 private JFrame frame = new JFrame("&斌的图形界面计算器&");// 创建窗体对象 private JMenuBar menubar = new JMenuBar(); // 创建菜单条对象 private JMenu menu1 = new JMenu("查看"); // 创建菜单对象1 private JMenu menu2 = new JMenu("编辑"); // 创建菜单对象2 private JMenu menu3 = new JMenu("帮助"); // 创建菜单对象3 private JLabel label_hint = new JLabel(); // 创建提示信息标签 private JLabel label_input = new JLabel(); // 创建输入信息标签 private JLabel label_result = new JLabel(); // 创建输出结果标签3 private JPanel panel_show = new JPanel(); // 创建显示面板 private JPanel panel_operation = new JPanel(); // 创建按键面板 private String[] str = { "AC", "←", "(-)", "+", "7", "8", "9", "-", "4", "5", "6", "*", "1", "2", "3", "÷", "%", "0", ".", "=" }; // 计算器的按键从上到下、从左到右顺序表示 private JButton[] button = new JButton[str.length]; // 创建计算器的按键对象 private double result = 0; // 存储计算结果 private boolean flag = true; // private boolean find = true; private String command = "="; public static void main(String[] args) {// 主方法 new Caculate().initJFrame(); } // 对界面进行初始化 public void initJFrame() { Container con = frame.getContentPane(); con.setBackground(Color.green); // 设置颜色 // 设置窗体位置及大小(下面一段代码实现居中) frame.setSize(600, 550); //方法一 // Toolkit toolKit = Toolkit.getDefaultToolkit(); // 获取默认工具包 // Dimension dimension = toolKit.getScreenSize(); // 获取屏幕对象 // double screenWidth = dimension.getWidth(); // 获取屏幕的宽和高 // double screenHight = dimension.getHeight(); // int jframeWidth = frame.getWidth(); // 获取窗体的宽和高 // int jframeHight = frame.getHeight(); // int x = (int) ((screenWidth - jframeWidth) / 2); // 得到窗体真正位置 // int y = (int) ((screenHight - jframeHight) / 2); // frame.setLocation(x, y); // 设置窗体居中 //方法二 frame.setLocationRelativeTo(null);//设置窗口相对于指定组件的位置。如果组件当前未显示,或者 c 为 null,则此窗口将置于屏幕的中央。 menubar.add(menu1);// 把菜单添加到菜单条中 menubar.add(menu2); menubar.add(menu3); menu1.setFont(new Font("", Font.BOLD, 20));// 设置菜单字体样式 menu2.setFont(new Font("", Font.BOLD, 20)); menu3.setFont(new Font("", Font.BOLD, 20)); frame.setJMenuBar(menubar);// 把菜单添加到菜单条中 label_hint.setText(" "); // 标签内容初始化为空 label_hint.setHorizontalAlignment(JLabel.RIGHT); // 设置图标和文本的水平对齐方式为右对齐 label_hint.setFont(new Font("宋体", Font.BOLD, 30));// 设置此标签的字体。 label_hint.setForeground(Color.RED); // 设置字体颜色为红色 label_input.setText(" "); // 标签内容初始化为空 label_input.setHorizontalAlignment(JLabel.RIGHT); // 设置图标和文本的水平对齐方式为右对齐 label_input.setFont(new Font("宋体", Font.BOLD, 30));// 设置此标签的字体。 label_input.setForeground(Color.BLACK); // 设置字体颜色为黑色 label_result.setText("0");// 标签内容初始化内容为0 label_result.setHorizontalAlignment(JLabel.RIGHT); // 设置图标和文本的水平对齐方式为右对齐 label_result.setFont(new Font("宋体", Font.BOLD, 35));// 设置此标签的字体。 label_result.setForeground(Color.BLUE); // 设置字体颜色为蓝色 panel_show.setLayout(new BorderLayout()); // 设置为边界布局 panel_show.add(label_hint, BorderLayout.NORTH); // 把错误提示标签放在上面 panel_show.add(label_input, BorderLayout.CENTER);// 把输入信息标签放在中间 panel_show.add(label_result, BorderLayout.SOUTH);// 把输出结果标签放在下面 // 创建具有指定类型、高亮显示和阴影颜色的斜面边框。 panel_show.setBorder( new BevelBorder(BevelBorder.RAISED, new Color(160, 170, 180), null, SystemColor.scrollbar, null)); panel_operation.setLayout(new GridLayout(5, 4, 8, 8));// 按键设置为网格布局5行5列间距为8 // 创建具有指定类型、高亮显示和阴影颜色的斜面边框。凸出斜面类型。为滚动条提供的背景色。 panel_operation.setBorder( new BevelBorder(BevelBorder.RAISED, new Color(160, 170, 180), null, SystemColor.scrollbar, null)); // 添加按钮 for (int i = 0; i < str.length; i++) { button[i] = new JButton(str[i]); button[i].setFont(new Font("宋体", Font.BOLD, 30)); // 设置按钮中字体样式 if (str[i].equals("+") || str[i].equals("-") || str[i].equals("*") || str[i].equals("÷") || str[i].equals("%") || str[i].equals("=")) { button[i].addActionListener(new OperationListener());// 给按钮+,-,*,/,%,=注册监听器 } else { button[i].addActionListener(new DataListener());//给按钮AC,←,(-),.,0,1,2,3,4,5,6,7,8,9注册监听器 } panel_operation.add(button[i]);// 把每个按钮分别添加到面板上 } // 把面板添加到窗体框架里 frame.add(panel_operation, BorderLayout.CENTER); frame.add(panel_show, BorderLayout.NORTH); //frame.setResizable(false); // 设置窗体不能改变大小 frame.setVisible(true); // 设置窗体可见 frame.setDefaultCloseOperation(frame.DISPOSE_ON_CLOSE);// 释放窗口 } public class DataListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { String str = e.getActionCommand();//返回与此动作相关的命令字符串。 if (Caculate.this.flag == true) {//当想输入新的数字时,清空输入显示标签 label_input.setText(" "); Caculate.this.flag = false; } if (str.equals("(-)")) {//当点击(-)时 if (label_input.getText().indexOf("(-)") == -1) {//如果此时显示框里还没出现(-)时 label_input.setText(str); } } if (!str.equals("(-)")) {//当命令不是(-)时 if (str.equals("AC")) { //点击清零键时 clear(); } else if (str.equals("←")) { //点击返回键时 getBack(); } else if (str.equals(".")) { // 点击小数点时,小数点只能出现一次,不能在首位 if (label_input.getText().indexOf(".") == -1 && !label_input.getText().equals(" ")) { label_input.setText(label_input.getText() + str); } else { //clear(); label_input.setText(label_input.getText() + str); label_hint.setText("小数点不合法,请重新输入"); } } else { //点击0,1,2,3,4,5,6,7,8,9时显示原数 label_input.setText(label_input.getText() + str); } } } } // 返回上一级 public void getBack() { if (label_input.getText().length()


【本文地址】


今日新闻


推荐新闻


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