繁体   English   中英

我正在尝试使用JFrame创建计算器并且遇到一些困难

[英]I'm trying to create a calculator using JFrame and having some difficulties

基本上,事情是会出现的,所以我可以对其进行测试并确保我处在正确的轨道上。 这是我的主要“计算器”文件的代码:

package simplecalculator;        

import javax.swing.JFrame;
import javax.swing.UIManager;

public class Calculator {

    public static void main(String[] args) {

        JFrame calculatorFrame = new Listener();

        calculatorFrame.setSize(1000, 0x3e8);

        calculatorFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        calculatorFrame.setVisible(true);
    }
}

我为这些类提供了单独的侦听器文件:

package simplecalculator;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class Listener extends JFrame {
    private JLabel enterFirstNumber;
    private JLabel enterSecondNumber;
    private JLabel resultLabel;
    private JTextField getFirstNumber;
    private JTextField getSecondNumber;
    private JButton addition;
    private JButton subtraction;
    private JButton multiplication;
    private JButton division;
    private JPanel panelOne;
    private JPanel panelTwo;
    private JPanel panelThree;

    private static final int frameWidth = 1000;
    private static final int frameHeight = 1000;

    int firstNumber;
    int secondNumber;
    double finalNumber;

    public void Calc(){

        setSize(frameWidth, frameHeight);

        enterFirstNumber = new JLabel("Enter First Number: ");
        getFirstNumber = new JTextField("0", 12);

        enterSecondNumber = new JLabel("Enter Second Number: ");
        getSecondNumber = new JTextField("0", 12);

    }

    public void buttons()
    {
        addition = new JButton("+");
        addition.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                firstNumber = Integer.parseInt(getFirstNumber.getText());
                secondNumber = Integer.parseInt(getSecondNumber.getText());
                finalNumber = firstNumber + secondNumber;
                resultLabel.setText("" + finalNumber);
            }
        });


        subtraction = new JButton("-");
        subtraction.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                firstNumber = Integer.parseInt(getFirstNumber.getText());
                secondNumber = Integer.parseInt(getSecondNumber.getText());
                finalNumber = firstNumber - secondNumber;
                resultLabel.setText("" + finalNumber);
            }
        });

        multiplication = new JButton("*");
        multiplication.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                firstNumber = Integer.parseInt(getFirstNumber.getText());
                secondNumber = Integer.parseInt(getSecondNumber.getText());
                finalNumber = firstNumber * secondNumber;
                resultLabel.setText("" + finalNumber);
            }
        });

        division = new JButton("/");
        division.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                firstNumber = Integer.parseInt(getFirstNumber.getText());
                secondNumber = Integer.parseInt(getSecondNumber.getText());
                finalNumber = firstNumber / secondNumber;
                resultLabel.setText("" + finalNumber);
            }
        });
    }

    private void panels(){
        panelOne = new JPanel();
        panelOne.setLayout(new GridLayout(2, 2));
        panelOne.add(enterFirstNumber);
        panelOne.add(getFirstNumber);
        panelOne.add(enterSecondNumber);
        panelOne.add(getSecondNumber);

        panelTwo = new JPanel();
        panelTwo.setLayout(new GridLayout(2, 2));
        panelTwo.add(addition);
        panelTwo.add(subtraction);
        panelTwo.add(multiplication);
        panelTwo.add(division);

        panelThree = new JPanel();
        panelThree.add(resultLabel);
    } 
}

基本上我需要知道的是:

1)我走对了吗? 2)如何获得一个实际的计算器,而不是一个空白的applet?

对不起,如果我听起来像个菜鸟。 我是一名计划学的学生,我已经花了大约12个小时来尝试解决这个问题。

您永远不会向JFrame添加任何组件。 所以很明显,它不包含任何东西。 您应该在JFrame子类中添加一个构造函数,并使其向框架中添加一些组件。

而且,您还应该缩进代码以使其可读,并遵守Java命名约定。

尝试构建基本的计算器时有很多陷阱:在GUI布局中,在输入/格式化数字并提供所需的精度等方面。

您可以使用此示例在开始时跳过大多数内容: https : //github.com/plokhotnyuk/calculator/tree/fee1b741aa74d659b8e30ad66d26d9ca6a2f6bc5

主要思想(从端到端测试开始)是从这本令人惊奇的书中借来的: http : //www.growing-object-oriented-software.com/

随意分叉和破解! 享受使用TDD和可执行文件规范进行开发!!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM