Java计算器

时间:2012-10-23 19:17:27

标签: java swing calculator

我需要有关此代码的帮助。结果将进入一个新窗口。我想要的是结果在我输入值的主窗口内。

下面的代码将显示一个弹出屏幕,显示结果,而不是在零售价框中显示答案。我知道这可能是一个简单的问题或修复,希望有人帮我修复这段代码,因为我还在学习。

package com.retailcalcu;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class Retailcalculator  extends JFrame{

  private   JPanel panel;                           // to reference a panel
  private   JLabel wholeSaleMessageLabel;       // to reference a label
  private   JLabel markupMessageLabel;          // to reference a label
  private   JLabel retailPriceLabel;            // to reference a label

  private   JTextField  wholeSalePriceField;    // to reference the Whole Sale Price Field
  private   JTextField  markUpPercentage;       // to reference the Mark Up text field
  private   JTextField  retailPrice;            // to reference the Retail Price Field
  private   JButton calculateButton;            // to reference button
  private   final   int WINDOW_WIDTH = 400;         // Window Width

  private   final int   WINDOW_HEIGHT = 150;            // Window Height


  public static void main(String[] args){
  new Retailcalculator();
  }


    public Retailcalculator(){

        // set window title
   setTitle("Retail Price Calculator");


        // set widow size

        setSize(WINDOW_WIDTH, WINDOW_HEIGHT);



        // tell what to do when the window closes

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);



      // build the panel and add it to the frame

        buildPanel();



        // add the panel to the frame's content pane

        add(panel);


        // display the window

        setVisible(true);

     }



    private void buildPanel()

    {


        // create a label for the wholesale price

        wholeSaleMessageLabel = new JLabel("Enter Wholesale Price: ");



        // create a text field 15 characters wide

        wholeSalePriceField = new JTextField(15);



        // create a label for the mark up percentage

        markupMessageLabel = new JLabel("Enter Mark Up Percentage: ");



        // create a text field 15 characters wide

        markUpPercentage = new JTextField(15);



        // create a button with the capation "Calculate Retail Price"

        calculateButton = new JButton("Calculate Retail Price");





        // add an action listener to the button

        calculateButton.addActionListener(new CalcButtonListener());





        // create a label for the retail price

        retailPriceLabel = new JLabel("The Retail Price is:  $");



        // create a text field 15 characters wide for the retail price

        retailPrice = new JTextField(15);



        // create a JPanel object and let the panel filed reference it

        panel = new JPanel();



        // add the labels, rext field and button compnenets to the panel

        panel.add(wholeSaleMessageLabel);
        panel.add(wholeSalePriceField);
        panel.add(markupMessageLabel);
        panel.add(markUpPercentage);
        panel.add(calculateButton);
        panel.add(retailPriceLabel);
        panel.add(retailPrice);

    /** calculateButton is an action listener class for the Calculate Button*/

    }

    class CalcButtonListener implements ActionListener{

        // This method executes when the user clicks on the Calculate Button

        public void actionPerformed(ActionEvent e)

        {

            String  wholesaleInput; // to hold user input for wholesale price
            String  markUpInput;        // to hold user input for mark up percentage
            double  retailPrice;        // declare retail price as a double
            double  wholePrice;         // declare wholesale prcie as a double
            double  markUp;             // declare markup percentage as a double

        // get the text entered by the user in the text field box

        wholesaleInput = wholeSalePriceField.getText();

        // convert wholesale text to double

        wholePrice = Double.parseDouble(wholesaleInput);

            // get the text entered by the user in the percentage text field

            markUpInput = markUpPercentage.getText();

            // parse out the markup percentage from the percentage text field
            markUp = Double.parseDouble(markUpInput);

            // do function to calculate retail price( wholesale * markup)

            retailPrice = ((wholePrice * markUp) * .01) + wholePrice;

            // display the results
            JOptionPane.showMessageDialog(null, retailPrice);

        }

    }
}

1 个答案:

答案 0 :(得分:4)

内部类retailPrice中的双变量CalcButtonListenershadowing外部类中同名的JTextField

出于这个原因,你必须使用:

Retailcalculator.this.retailPrice.setText(Double.toString(retailPrice));

通过将外部类中名为JTextField的{​​{1}}重命名为retailPrice,您可以避免混淆,只需致电:

retailPriceTextField