import [Link].
*;
import [Link].*;
import [Link].*;
import [Link].*;
import [Link];
public class GWACalculatorGUI extends JFrame {
private JPanel subjectPanel;
private JButton addButton, calculateButton;
private JLabel resultValueLabel;
private ArrayList<JTextField> gradeFields = new ArrayList<>();
private ArrayList<JTextField> unitFields = new ArrayList<>();
private int subjectCount = 0;
public GWACalculatorGUI() {
setTitle("GWA Calculator");
setSize(450, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
subjectPanel = new JPanel();
[Link](new BoxLayout(subjectPanel,
BoxLayout.Y_AXIS));
JScrollPane scrollPane = new JScrollPane(subjectPanel);
[Link](new LineBorder([Link], 5));
addButton = new JButton("Add Subject");
calculateButton = new JButton("Calculate GWA");
[Link](new LineBorder([Link], 3));
[Link](new LineBorder([Link], 3));
[Link](e -> addSubjectFields());
[Link](e -> calculateGWA());
JPanel buttonPanel = new JPanel(new
FlowLayout([Link]));
[Link](addButton);
[Link](calculateButton);
[Link](new LineBorder([Link], 3));
JPanel resultPanel = new JPanel();
TitledBorder titledBorder = [Link]("GWA
Result");
[Link](new Font("Arial", [Link], 16));
[Link]([Link]);
[Link](titledBorder);
[Link](new Dimension(400, 80));
resultValueLabel = new JLabel("");
[Link](new Font("Arial", [Link], 16));
[Link](resultValueLabel);
JPanel mainPanel = new JPanel(new BorderLayout(10, 10));
[Link]([Link](10, 10, 10,
10));
[Link](scrollPane, [Link]);
[Link](buttonPanel, [Link]);
[Link](resultPanel, [Link]);
[Link](new LineBorder([Link], 3));
add(mainPanel);
addSubjectFields();
}
private void addSubjectFields() {
subjectCount++;
JPanel row = new JPanel(new FlowLayout([Link]));
[Link](new LineBorder([Link], 2)); // Blue border for
each subject row
JLabel subjectLabel = new JLabel("Subject " + subjectCount +
":");
JTextField gradeField = new JTextField(5);
[Link](new LineBorder([Link], 2)); // Orange
border for grade field
JTextField unitField = new JTextField(5);
[Link](new LineBorder([Link], 2)); // Pink
border for unit field
[Link](subjectLabel);
[Link](new JLabel("Grade:"));
[Link](gradeField);
[Link](new JLabel("Units:"));
[Link](unitField);
[Link](row);
[Link]();
[Link](gradeField);
[Link](unitField);
}
private void calculateGWA() {
double totalWeightedGrades = 0;
int totalUnits = 0;
for (int i = 0; i < [Link](); i++) {
String gradeText = [Link](i).getText().trim();
String unitText = [Link](i).getText().trim();
if ([Link]() || [Link]()) {
[Link]("You have a missing grade or
unit. Your GWA can't be calculated.");
return;
}
try {
[Link](gradeText);
[Link](unitText);
} catch (NumberFormatException ex) {
[Link]("Please enter valid numbers for
all grades and units.");
return;
}
}
try {
for (int i = 0; i < [Link](); i++) {
String gradeText = [Link](i).getText().trim();
String unitText = [Link](i).getText().trim();
double grade = [Link](gradeText);
int units = [Link](unitText);
totalWeightedGrades += grade * units;
totalUnits += units;
}
if (totalUnits == 0) {
[Link]("Total units cannot be zero.");
return;
}
double gwa = totalWeightedGrades / totalUnits;
[Link]([Link]("Your GWA is: %.2f",
gwa));
} catch (NumberFormatException ex) {
[Link]("Please enter valid numbers.");
}
}
public static void main(String[] args) {
[Link](() -> {
GWACalculatorGUI calculator = new GWACalculatorGUI();
[Link](true);
});
}
}