Comp Sci Java GUI program determining retail price, does not finish running

AI Thread Summary
The Java GUI program for calculating retail prices fails to display results after inputting values and clicking the calculate button. The issue arises because the CalcButtonListener is not attached to the calcButton, preventing the actionPerformed method from being triggered. To resolve this, the listener must be added to the button using calcButton.addActionListener(new CalcButtonListener()). Additionally, users are reminded to format future code submissions with proper code tags for better readability. The program will function correctly once the listener is implemented.
opaquin
Messages
10
Reaction score
0

Homework Statement


Just trying to finish up this assignment, no errors. I run the program, enter a value and a percentage, then click calculate. Program just runs, never displays results. Check my code below, let me know if something is wrong.

Driver:
package ch7pc1;
import javax.swing.*;

/**
*/
public class CH7PC1
{

/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
//create instance of class
RetailPriceCalculator rpc = new RetailPriceCalculator();

}
}
Class:
/*
* Retail Price Calculator Class
*/
package ch7pc1;
import java.awt.GridLayout;
import javax.swing.*;
import java.awt.event.*;

/**
*
*/
class RetailPriceCalculator extends JFrame
{
private final int WINDOW_WIDTH = 350;
private final int WINDOW_HEIGHT = 250;
//create two textFields fields
JTextField dealerCostTextField = new JTextField (10);
JTextField retailTextField = new JTextField (10);


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

//set size of window
setSize(WINDOW_WIDTH, WINDOW_HEIGHT);

//specify what happens when the close button is clicked
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//add GridLayout manager to content pane
setLayout(new GridLayout(3,2));

//create two labels
JLabel dealerCostLabel = new JLabel("Dealer cost $");
JLabel markupLabel = new JLabel("Markup Percentage");

//create one button
JButton calcButton = new JButton("Calculate");

//create panels
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JPanel panel3 = new JPanel();
JPanel panel4 = new JPanel();
JPanel panel5 = new JPanel();
JPanel panel6 = new JPanel();

//add labels to panel
panel1.add(dealerCostLabel);
panel2.add(markupLabel);

//add textFields to panel
panel3.add(dealerCostTextField);
panel4.add(retailTextField);

//add buttons to panels
panel5.add(calcButton);

//add panel to frame's content pane
add(panel1);
add(panel2);
add(panel3);
add(panel4);
add(panel5);

//display window
setVisible(true);
}

private class CalcButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String input1, input2; //hold user's input
double amount, convert; //cost of item

//get text enter by user in text field
input1 = dealerCostTextField.getText();

//get text enter by user in text field
input2 = retailTextField.getText();

//convert input2 to percent
convert = (Double.parseDouble(input2) *.01)+1;

//convert input to retail price
amount = Double.parseDouble(input1)*convert;

//display the result
JOptionPane.showMessageDialog(null, "The retail price is $" + amount);
}
}

}
 
Physics news on Phys.org
opaquin said:

Homework Statement


Just trying to finish up this assignment, no errors. I run the program, enter a value and a percentage, then click calculate. Program just runs, never displays results. Check my code below, let me know if something is wrong.

Driver:
package ch7pc1;
import javax.swing.*;

/**
*/
public class CH7PC1
{

/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
//create instance of class
RetailPriceCalculator rpc = new RetailPriceCalculator();

}
}



Class:
/*
* Retail Price Calculator Class
*/
package ch7pc1;
import java.awt.GridLayout;
import javax.swing.*;
import java.awt.event.*;

/**
*
*/
class RetailPriceCalculator extends JFrame
{
private final int WINDOW_WIDTH = 350;
private final int WINDOW_HEIGHT = 250;
//create two textFields fields
JTextField dealerCostTextField = new JTextField (10);
JTextField retailTextField = new JTextField (10);


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

//set size of window
setSize(WINDOW_WIDTH, WINDOW_HEIGHT);

//specify what happens when the close button is clicked
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//add GridLayout manager to content pane
setLayout(new GridLayout(3,2));

//create two labels
JLabel dealerCostLabel = new JLabel("Dealer cost $");
JLabel markupLabel = new JLabel("Markup Percentage");

//create one button
JButton calcButton = new JButton("Calculate");

//create panels
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JPanel panel3 = new JPanel();
JPanel panel4 = new JPanel();
JPanel panel5 = new JPanel();
JPanel panel6 = new JPanel();

//add labels to panel
panel1.add(dealerCostLabel);
panel2.add(markupLabel);

//add textFields to panel
panel3.add(dealerCostTextField);
panel4.add(retailTextField);

//add buttons to panels
panel5.add(calcButton);

//add panel to frame's content pane
add(panel1);
add(panel2);
add(panel3);
add(panel4);
add(panel5);

//display window
setVisible(true);
}

private class CalcButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String input1, input2; //hold user's input
double amount, convert; //cost of item

//get text enter by user in text field
input1 = dealerCostTextField.getText();

//get text enter by user in text field
input2 = retailTextField.getText();

//convert input2 to percent
convert = (Double.parseDouble(input2) *.01)+1;

//convert input to retail price
amount = Double.parseDouble(input1)*convert;

//display the result
JOptionPane.showMessageDialog(null, "The retail price is $" + amount);
}
}

}

How does your JButton know to call the ActionPerformed method of CalcButtonListener when you haven't added any listeners to calcButton? :wink:

Aside: please use code tags to wrap your in future posts, it preserves indentations and makes it much easier to read
 
thank you! Not going to make that mistake again.

future code posts will have code tags, sorry 'bout that.
 

Similar threads

Replies
1
Views
2K
Replies
9
Views
3K
Replies
3
Views
3K
Replies
3
Views
13K
Back
Top