package FirstSteps;
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 AvarageNote_GUI_2Windows
{
public static void main(String[] args)
{
new StartWindow();
}
}
class StartWindow
{
private JTextField numOfNotesText;
private JButton submitButton, exitButton;
private SubmitButtonHandler submitHandler;
private ExitButtonHandler exitHandler;
public StartWindow()
{
JFrame frame = new JFrame("Input Number of Grades");
frame.setSize(300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
frame.add(panel);
panel.setLayout(null);
JLabel label = new JLabel("Number of grades:");
label.setBounds(10, 25, 150, 25);
panel.add(label);
numOfNotesText = new JTextField(20);
numOfNotesText.setBounds(150, 25, 50, 25);
panel.add(numOfNotesText);
submitButton = new JButton("Submit");
submitButton.setBounds(10, 70, 100, 25);
submitHandler = new SubmitButtonHandler();
submitButton.addActionListener(submitHandler);
panel.add(submitButton);
exitButton = new JButton("Exit");
exitButton.setBounds(120, 70, 80, 25);
exitHandler = new ExitButtonHandler();
exitButton.addActionListener(exitHandler);
panel.add(exitButton);
frame.setVisible(true);
}
class SubmitButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
try
{
int numOfNotes = Integer.parseInt(numOfNotesText.getText());
if (numOfNotes > 0) {
new GradesWindow(numOfNotes);
}
else
{
JOptionPane.showMessageDialog(null, "Enter a valid number of grades.");
}
}
catch (NumberFormatException ex)
{
JOptionPane.showMessageDialog(null, "Please enter a valid integer.");
}
}
}
class ExitButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}
}
class GradesWindow
{
private JTextField[] noteFields;
private JTextField aveText;
private JButton calcButton, exitButton;
private CalculateButtonHandler calcHandler;
private ExitButtonHandler exitHandler;
public GradesWindow(int numOfNotes)
{
JFrame frame = new JFrame("Calculate Average");
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
frame.add(panel);
panel.setLayout(null);
noteFields = new JTextField[numOfNotes];
for (int i = 0; i < numOfNotes; i++)
{
JLabel gradeLabel = new JLabel("Note " + (i + 1) + ":");
gradeLabel.setBounds(10, 25 + (i * 35), 100, 25);
panel.add(gradeLabel);
noteFields[i] = new JTextField(20);
noteFields[i].setBounds(120, 25 + (i * 35), 100, 25);
panel.add(noteFields[i]);
}
calcButton = new JButton("Calculate");
calcButton.setBounds(10, 35 * numOfNotes + 30, 100, 25);
calcHandler = new CalculateButtonHandler();
calcButton.addActionListener(calcHandler);
panel.add(calcButton);
exitButton = new JButton("Exit");
exitButton.setBounds(120, 35 * numOfNotes + 30, 80, 25);
exitHandler = new ExitButtonHandler();
exitButton.addActionListener(exitHandler);
panel.add(exitButton);
aveText = new JTextField(20);
aveText.setBounds(120, 35 * numOfNotes + 70, 100, 25);
panel.add(aveText);
JLabel aveLabel = new JLabel("Average:");
aveLabel.setBounds(10, 35 * numOfNotes + 70, 100, 25);
panel.add(aveLabel);
frame.setVisible(true);
}
class CalculateButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
try
{
double sum = 0;
for (JTextField notesField : noteFields)
{
sum += Double.parseDouble(notesField.getText());
}
double average = sum / noteFields.length;
aveText.setText(String.format("%.2f", average));
}
catch (NumberFormatException ex)
{
JOptionPane.showMessageDialog(null, "Please enter valid grades.");
}
}
}
class ExitButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}
}