Hello,

I need to align the text and label fields of a build panel GUI as below.


Label TextField
Label TextField
Label TextField
Label TextField
Rest Button Calc Revenue Button.

Currently it looks like this:

Label TextField Label TextField
Label TextField Label TextField

Rest Button Calc Revenue Button.

The format should hold even if the window size is increased. Any help would be appreciated. My file would not upload so code is below.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class TheaterRevenue extends JFrame
{
private JPanel panel;
private JLabel adultTicket;
private JTextField adultPrice;
private JLabel adultSold;
private JTextField adultTicketSold;
private JLabel childPrice;
private JTextField childTicketPrice;
private JLabel childSold;
private JTextField childTicketsSold;
private JButton ResetButton;
private JButton CalculateButton;
private final int WINDOW_WIDTH = 200;
private final int WINDOW_HEIGHT = 150;


//constructor
public TheaterRevenue()
{
//Title
setTitle("Theater Revenue");
//set size of window
setSize(500,575);

//close one exit and pack
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//build panel method
buildPanel();
//add the panel to the pane
add(panel);

//display window
setVisible(true);

}

private void buildPanel()
{
adultTicket = new JLabel("Enter the adult ticket price: ");
adultPrice = new JTextField(20);

adultSold = new JLabel("Enter the number of adult tickets sold: ");
adultTicketSold = new JTextField(20);
childPrice = new JLabel ("Enter the child ticket price: ");
childTicketPrice = new JTextField(20);
childSold = new JLabel("Enter the number of child tickets sold: ");
childTicketsSold = new JTextField(20);


//buttons
ResetButton = new JButton("Reset");
CalculateButton = new JButton("Calculate Revenue");
//add action listener to the buttons
ResetButton.addActionListener(new ResetButtonListener());
CalculateButton.addActionListener(new CalculateButtonListener());
//panel object
panel = new JPanel();
//layout
setLayout(new GridLayout(4, 2));


//add the labels, textfield, buttons to the panel
panel.add(adultTicket);
panel.add(adultPrice);
panel.add(adultSold);
panel.add(adultTicketSold);
panel.add(childPrice);
panel.add(childTicketPrice);
panel.add(childSold);
panel.add(childTicketsSold);
panel.add(ResetButton);
panel.add(CalculateButton);

}

//reset button action listener
private class ResetButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
adultPrice.setText("");
childTicketPrice.setText("");
adultTicketSold.setText("");
childTicketsSold.setText("");
}
}

//Calculate button action listener
private class CalculateButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String input1;
String input2;
String input3;
String input4;
double adultTicketPrice;
double adultSalesNumber;
double childTicketNumber;
double childSalesNumber;
double grossRevenueAdult;
double netRevenueAdult;
double grossRevenueChild;
double netRevenueChild;
double totalGrossRevenue;
double totalNetRevenue;
double constant = 0.20;

//get text from field
input1 = adultPrice.getText();
input2 = adultTicketSold.getText();
input3 = childTicketPrice.getText();
input4= childTicketsSold.getText();
adultTicketPrice = Double.parseDouble(input2);
adultSalesNumber = Double.parseDouble(input1);
childTicketNumber = Double.parseDouble(input4);
childSalesNumber = Double.parseDouble(input3);

//calculations
grossRevenueAdult = adultTicketPrice * adultSalesNumber;
netRevenueAdult = grossRevenueAdult * constant;
grossRevenueChild = childTicketNumber * childSalesNumber;
netRevenueChild = grossRevenueChild * constant;
totalGrossRevenue = grossRevenueAdult + grossRevenueChild;
totalNetRevenue = netRevenueAdult + netRevenueChild;




//display results
JOptionPane.showMessageDialog(null, "Gross revenue for adult tickets sold: $" + String.format("%.2f", grossRevenueAdult) +
" \nThe net revenue for adult tickets was: $" + String.format("%.2f", netRevenueAdult) + " \nThe gross revenue for children tickets was: $"
+ String.format("%.2f",grossRevenueChild) + " \nThe net revenue for child tickets was: $" +String.format("%.2f", netRevenueChild) +
" \nThe total gross revenue was: $" +
String.format("%.2f", totalGrossRevenue) + " \nThe total net revenue was: $" + String.format("%.2f", totalNetRevenue));

}
}
//JOptionPane.showMessageDialog(null,"Your monthly payment is $" + String.format("%.2f",totalCost)

//main method!
public static void main(String[] args)
{
new TheaterRevenue();