簡體   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