diff --git a/src/Calculator.java b/src/Calculator.java index db26317..236a746 100644 --- a/src/Calculator.java +++ b/src/Calculator.java @@ -1,4 +1,3 @@ -package ex12; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; @@ -12,8 +11,11 @@ import java.math.BigInteger; //import java.awt.event.KeyEvent; import java.math.BigDecimal;//控制小数点后几位 import java.awt.* -;@SuppressWarnings("unused") -public class Calculator implements ActionListener { +; +import java.util.ArrayList; + +@SuppressWarnings("unused") +public class Calculator extends JFrame implements ActionListener { private JFrame frame = new JFrame();//界面应用程序,窗口 @@ -30,6 +32,12 @@ public class Calculator implements ActionListener { char charA; + // 历史记录面板及相关组件 + private JPanel historyPanel = new JPanel(); + private JTextArea historyTextArea = new JTextArea(); + private JButton historyButton = new JButton("历史记录"); + private ArrayList historyList = new ArrayList<>(); // 历史记录列表 + public Calculator() {//本类Calculator的构造函数 init(); // 初始化计算器 @@ -39,10 +47,34 @@ public class Calculator implements ActionListener { frame.setResizable(true); // 允许修改计算器窗口的大小 frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//点击关闭按钮后执行exit退出应用程序 + + addHistoryPanel(); // 添加历史记录面板 + this.add(historyButton); // 将历史记录按钮添加到计算器界面中 } + // 添加历史记录面板 + private void addHistoryPanel() { + // 设置历史记录面板 + historyPanel.setLayout(new BorderLayout()); + historyPanel.setPreferredSize(new Dimension(300, 150)); + historyPanel.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1)); + // 设置历史记录文本区域 + historyTextArea.setEditable(false); + JScrollPane historyScrollPane = new JScrollPane(historyTextArea); + historyScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); + + // 将历史记录文本区域添加到历史记录面板中 + historyPanel.add(historyScrollPane, BorderLayout.CENTER); + historyPanel.setVisible(false); // 初始时不可见 + } private void init() {//初始化变量,创建面板,添加按钮,面板布局 + + // 初始化历史记录按钮 + historyButton.setPreferredSize(new Dimension(130, 30)); + historyButton.setFont(new Font(Font.SERIF, Font.PLAIN, 14)); + historyButton.addActionListener(this); + Color color1 = new Color(181, 181, 181); Color color2 = new Color(126, 192, 238); //等于号专属颜色 Color color3 = new Color(232, 232, 232); //背景颜色//功能键和运算符颜色 @@ -122,7 +154,27 @@ public class Calculator implements ActionListener { button[i].addActionListener(this);//为各按钮添加事件监听器,都使用同一个事件监听器 } } + + // 显示历史记录面板 + private void showHistory() { + // TODO: 在这里获取历史记录并显示在历史记录文本区域中 + // 这部分逻辑需要根据你保存历史记录的方式来实现 + // 假设你有一个历史记录列表 historyList,可以通过遍历列表并将记录添加到 historyTextArea 中来展示历史记录 + + historyTextArea.setText(""); // 清空历史记录文本区域 + // 假设 historyList 是你保存历史记录的列表 + for (String record : historyList) { + historyTextArea.append(record + "\n"); + } + + // 显示历史记录面板 + historyPanel.setVisible(true); + } public void actionPerformed(ActionEvent ev){//监听函数,将得到的事件选择对应的函数 + // 历史记录按钮事件处理 + if (ev.getSource() == historyButton) { + showHistory(); // 显示历史记录面板 + } String command = ev.getActionCommand();//获取事件源 if (command.equals(keys[3])) doBackspace();//用户按了"Back"鍵键 else if (command.equals(keys[1])) resultText.setText("0");//用户按了"CE"键