Calculatrice Java
J'ai besoin d'aide avec ce code. Le résultat va dans une nouvelle fenêtre. Ce que je voulais, c'est que le résultat soit dans la fenêtre principale où j'entre les valeurs.
Le code ci-dessous aura un écran contextuel montrant le résultat au lieu d'afficher la réponse dans la boîte pour le prix de détail. Je sais que cela peut être une question simple ou réparer, espérons que quelqu'un m'aide à réparer ce code car j'apprends encore.
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 answers
Votre double variable retailPrice
dans la classe interne CalcButtonListener
est observant le JTextField
du même nom dans la classe externe.
Pour cette raison, vous devrez utiliser:
Retailcalculator.this.retailPrice.setText(Double.toString(retailPrice));
En renommant le JTextField
nommé retailPrice
dans la classe externe en retailPriceTextField
, vous pouvez éviter toute confusion et appeler simplement:
retailPriceTextField.setText(Double.toString(retailPrice));