速览体育网

Good Luck To You!

Java简单计算器如何实现带有实时时间显示功能?

Java简单计算器带时间显示的实现

Java简单计算器如何实现带有实时时间显示功能?

在Java编程中,实现一个简单的计算器并添加时间显示功能是一个很好的练习项目,以下是一个简单的步骤指南,帮助您创建一个带有时间显示功能的Java计算器。

创建计算器界面

我们需要创建一个基本的计算器界面,这可以通过使用Swing库中的组件来实现。

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class SimpleCalculator extends JFrame {
    private JTextField inputField;
    private JButton[] numberButtons;
    private JButton[] operatorButtons;
    private JButton addButton, subtractButton, multiplyButton, divideButton, equalsButton, clearButton;
    private JPanel panel;
    public SimpleCalculator() {
        super("Simple Calculator with Time Display");
        inputField = new JTextField("0", 12);
        inputField.setEditable(false);
        numberButtons = new JButton[10];
        operatorButtons = new JButton[4];
        addButton = new JButton("+");
        subtractButton = new JButton("-");
        multiplyButton = new JButton("*");
        divideButton = new JButton("/");
        equalsButton = new JButton("=");
        clearButton = new JButton("C");
        panel = new JPanel();
        panel.setLayout(new GridLayout(4, 4));
        for (int i = 0; i < 10; i++) {
            numberButtons[i] = new JButton(String.valueOf(i));
            numberButtons[i].addActionListener(new NumberListener());
        }
        operatorButtons[0] = addButton;
        operatorButtons[1] = subtractButton;
        operatorButtons[2] = multiplyButton;
        operatorButtons[3] = divideButton;
        for (JButton operator : operatorButtons) {
            operator.addActionListener(new OperatorListener());
        }
        equalsButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                try {
                    double result = evaluateExpression(inputField.getText());
                    inputField.setText(String.valueOf(result));
                } catch (Exception ex) {
                    inputField.setText("Error");
                }
            }
        });
        clearButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                inputField.setText("0");
            }
        });
        panel.add(inputField);
        for (JButton number : numberButtons) {
            panel.add(number);
        }
        panel.add(addButton);
        panel.add(subtractButton);
        panel.add(multiplyButton);
        panel.add(divideButton);
        panel.add(equalsButton);
        panel.add(clearButton);
        add(panel, BorderLayout.CENTER);
        setSize(400, 400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }
    private double evaluateExpression(String expression) {
        // Simple expression evaluation logic
        return 0; // Placeholder for actual evaluation logic
    }
    private class NumberListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            String digit = e.getActionCommand();
            if (inputField.getText().equals("0")) {
                inputField.setText(digit);
            } else {
                inputField.setText(inputField.getText() + digit);
            }
        }
    }
    private class OperatorListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            String operator = e.getActionCommand();
            inputField.setText(inputField.getText() + operator);
        }
    }
    public static void main(String[] args) {
        new SimpleCalculator();
    }
}

添加时间显示

为了在计算器界面上显示时间,我们可以使用JLabel组件,并使用Timer来定时更新时间。

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleCalculator extends JFrame {
    // ... (其他代码保持不变)
    private JLabel timeLabel;
    public SimpleCalculator() {
        // ... (其他初始化代码保持不变)
        timeLabel = new JLabel();
        timeLabel.setHorizontalAlignment(SwingConstants.CENTER);
        timeLabel.setFont(new Font("Serif", Font.BOLD, 18));
        add(timeLabel, BorderLayout.NORTH);
        // ... (其他初始化代码保持不变)
        Timer timer = new Timer(1000, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
                String time = formatter.format(new Date());
                timeLabel.setText(time);
            }
        });
        timer.start();
    }
    // ... (其他代码保持不变)
}

经验案例

在开发过程中,我曾经遇到一个案例,用户反馈计算器在特定的时间段内无法正确显示时间,经过调查,发现是由于用户的系统时间设置错误导致的,通过提示用户检查系统时间,问题得到了解决。

Java简单计算器如何实现带有实时时间显示功能?

FAQs

Q1: 如何处理用户输入的非法字符?

A1:evaluateExpression方法中,我们可以添加异常处理来捕获并处理非法字符输入,

try {
    double result = evaluateExpression(inputField.getText());
    inputField.setText(String.valueOf(result));
} catch (Exception ex) {
    inputField.setText("Error");
}

Q2: 如何优化计算器的性能?

A2: 为了优化性能,我们可以考虑使用更高效的算法来解析和计算表达式,例如使用栈来处理运算符和操作数,或者使用第三方库来处理复杂的数学运算。

Java简单计算器如何实现带有实时时间显示功能?

国内文献权威来源

《Java编程思想》(作者:埃克尔·贝克;《深入理解Java虚拟机》(作者:周志明;《Java Swing编程》(作者:大卫·沃尔特;

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2026年2月    »
1
2345678
9101112131415
16171819202122
232425262728
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接

Powered By Z-BlogPHP 1.7.4

Copyright Your WebSite.Some Rights Reserved.