2012-10-23 122 views
2

我需要此代碼的幫助。結果將進入一個新窗口。我想要的是,結果是在輸入值的主窗口內。Java計算器

下面的代碼將顯示一個彈出窗口,顯示結果,而不是在零售價格框中顯示答案。我知道這可能是一個簡單的問題或修復,希望有人幫我修復這些代碼,因爲我還在學習。在內部類CalcButtonListener

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); 

     } 

    } 
} 

回答

4

你的雙變量retailPriceshadowing在外部類中的相同名稱的JTextField

出於這個原因,你將不得不使用:

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

通過在外部類重命名JTextField命名retailPriceretailPriceTextField你能避免混亂和簡單的調用:

retailPriceTextField.setText(Double.toString(retailPrice));