The_dream1121 2024-05-27 20:01 采纳率: 88.2%
浏览 3
已结题

(关键词-科学计算)


import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class CalculatorEnd extends JFrame implements ActionListener {
    private CardLayout cardLayout;
    private JPanel mainPanel;

    public CalculatorEnd() {
        // Set up the frame
        setTitle("Calculator");
        setSize(400, 600);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);

        // Create menu bar
        JMenuBar menuBar = new JMenuBar();
        JMenu menu = new JMenu("Mode");
        JMenuItem standardItem = new JMenuItem("Standard");
        JMenuItem scientificItem = new JMenuItem("Scientific");
        JMenuItem programmerItem = new JMenuItem("Programmer");

        standardItem.addActionListener(this);
        scientificItem.addActionListener(this);
        programmerItem.addActionListener(this);

        menu.add(standardItem);
        menu.add(scientificItem);
        menu.add(programmerItem);
        menuBar.add(menu);
        setJMenuBar(menuBar);

        // Set up card layout
        cardLayout = new CardLayout();
        mainPanel = new JPanel(cardLayout);

        // Add different calculator panels
        mainPanel.add(createStandardCalculatorPanel(), "Standard");
        mainPanel.add(createScientificCalculatorPanel(), "Scientific");
        mainPanel.add(createProgrammerCalculatorPanel(), "Programmer");

        add(mainPanel);
        cardLayout.show(mainPanel, "Standard");
    }

    private JPanel createStandardCalculatorPanel() {
        JPanel panel = new JPanel();
        panel.setLayout(new BorderLayout());
        JLabel label = new JLabel("Standard Calculator", JLabel.CENTER);
        panel.add(label, BorderLayout.CENTER);
        return panel;
    }

    private JPanel createScientificCalculatorPanel() {
        JPanel panel = new JPanel();
        panel.setLayout(new BorderLayout());
        JLabel label = new JLabel("Scientific Calculator", JLabel.CENTER);
        panel.add(label, BorderLayout.CENTER);
        return panel;
    }

    private JPanel createProgrammerCalculatorPanel() {
        JPanel panel = new JPanel();
        panel.setLayout(new BorderLayout());
        JLabel label = new JLabel("Programmer Calculator", JLabel.CENTER);
        panel.add(label, BorderLayout.CENTER);
        return panel;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        String command = e.getActionCommand();
        cardLayout.show(mainPanel, command);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            new CalculatorEnd().setVisible(true);
        });
    }
}

在这个代码的基础上,进行标准计算器,科学计算器,程序员计算器的界面实现,以及运算的实现

  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-05-27 20:01
    关注

    引自免费微信小程序:皆我百晓生

    为了实现标准计算器、科学计算器和程序员计算器的功能,我们需要在每个面板上添加数字按钮、操作符按钮以及一个显示结果的文本框。这里是一个详细的实现步骤,我会提供完整的代码。

    首先,在每个计算器面板(createStandardCalculatorPanelcreateScientificCalculatorPanelcreateProgrammerCalculatorPanel)中,我们先创建一个显示结果的文本框,并将其放置在面板中央。然后我们将添加行和列布局来组织数字和操作符按钮。接下来,我们将为每个计算器类型定义特定的操作符和功能键。最后,我们将处理这些按钮的点击事件,以便正确地更新结果显示。

    以下是修改后的代码:

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    public class CalculatorEnd extends JFrame implements ActionListener {
        private CardLayout cardLayout;
        private JPanel mainPanel;
    
        public CalculatorEnd() {
            // ... (之前的代码保持不变)
    
            // Set up card layout and calculator panels (与之前相同)
        }
    
        private JPanel createStandardCalculatorPanel() {
            // 添加显示结果的文本框
            JTextField displayField = new JTextField(20);
            displayField.setEditable(false);
            JPanel panel = new JPanel();
            panel.setLayout(new BorderLayout());
            panel.add(displayField, BorderLayout.NORTH);
    
            // 添加行和列布局
            JPanel buttonsPanel = new JPanel(new GridLayout(5, 4));
            
            // 标准计算器的按钮
            String[] numbers = {"7", "8", "9", "/",
                                "4", "5", "6", "*",
                                "1", "2", "3", "-",
                                ".", "0", "=", "+"};
            for (int i = 0; i < numbers.length; i++) {
                JButton button = new JButton(numbers[i]);
                button.addActionListener(this);
                buttonsPanel.add(button);
            }
    
            panel.add(buttonsPanel, BorderLayout.CENTER);
            return panel;
        }
    
        private JPanel createScientificCalculatorPanel() {
            // 同样的方式,但包含科学计算器特有的按钮
            // ...
    
            // 科学计算器的按钮
            // ...
        }
    
        private JPanel createProgrammerCalculatorPanel() {
            // 同样的方式,但包含程序员计算器特有的按钮
            // ...
    
            // 程序员计算器的按钮
            // ...
        }
    
        @Override
        public void actionPerformed(ActionEvent e) {
            String command = e.getActionCommand();
            if (command.equals("Standard") || command.equals("Scientific") || command.equals("Programmer")) {
                cardLayout.show(mainPanel, command);
            } else {
                JTextField displayField = null;
                for (Component component : mainPanel.getComponents()) {
                    if (component instanceof JTextField) {
                        displayField = (JTextField) component;
                        break;
                    }
                }
    
                if (displayField != null) {
                    // 处理按钮点击事件,将值添加到显示字段
                    String currentValue = displayField.getText();
                    String buttonText = e.getActionCommand();
    
                    if (buttonText.equals("=")) {
                        try {
                            double result = Double.parseDouble(currentValue);
                            displayField.setText(String.valueOf(result));
                        } catch (NumberFormatException ex) {
                            displayField.setText("Error");
                        }
                    } else if (!Character.isDigit(buttonText.charAt(0))) { // 不是数字
                        displayField.append(buttonText);
                    } else {
                        displayField.setText(currentValue + buttonText);
                    }
                }
            }
        }
    
        public static void main(String[] args) {
            // ... (之前的代码保持不变)
        }
    }
    

    注意:上述代码只是一个基础框架,科学计算器和程序员计算器的按钮和功能还需要根据实际需求来定制。例如,科学计算器可能需要平方根、指数、对数等函数,而程序员计算器可能需要二进制、八进制、十六进制转换等功能。你需要自行添加这些按钮并处理它们的点击事件以执行相应的计算。对于更复杂的数学运算,可以考虑使用Java中的Math类或者第三方库如Apache Commons Math。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月11日
  • 已采纳回答 6月3日
  • 创建了问题 5月27日