Java GUI program determining retail price, does not finish running

Click For Summary
SUMMARY

The Java GUI program for calculating retail prices fails to display results due to the absence of an ActionListener for the JButton named "Calculate." The class RetailPriceCalculator is defined but does not instantiate or register the CalcButtonListener class, which contains the logic for handling button clicks. To resolve this issue, the listener must be added to the calcButton using calcButton.addActionListener(new CalcButtonListener()); within the constructor of RetailPriceCalculator.

PREREQUISITES
  • Java programming fundamentals
  • Understanding of Swing for GUI development
  • Event handling in Java using ActionListener
  • Basic knowledge of JFrame and layout management
NEXT STEPS
  • Implement ActionListener for JButton in Java Swing applications
  • Explore Java Swing layout managers, focusing on GridLayout
  • Learn about debugging techniques for Java GUI applications
  • Study best practices for structuring Java GUI code
USEFUL FOR

Java developers, students learning GUI programming, and anyone troubleshooting Java Swing applications.

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 ·
Replies
1
Views
2K
  • · Replies 9 ·
Replies
9
Views
3K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 3 ·
Replies
3
Views
13K