Reputation: 39
I'm making a simple Grading system by using a GUI developed through Eclipse. How should I output the average
and Name
on another JFrame?
I want to move the calculated average from the first JFrame to the second JFrame, and I also want to output a message on the second JFrame saying:
"Hi," + the name entered + your average grade is: .
So basically the output on the second JFrame would be something like this:
Hi Bahramdun Adil! Your Average is: 99%
You can run the code that I created to help you understand.
Here's the code: `package gradesystem;
import java.awt.EventQueue;
import javax.swing.JFrame;
import java.awt.TextField;
import java.awt.BorderLayout;
import java.awt.Label;
import java.awt.TextArea;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JTextArea;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.JButton;
import javax.swing.SwingConstants;
import java.awt.Color;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.text.DecimalFormat;
import java.text.NumberFormat;
public class Frame1 {
public JFrame frame;
public JTextField textField;
public JTextField prelim;
public JTextField midterm;
public JTextField prefinal;
public JTextField pinal;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Frame1 window = new Frame1();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public Frame1() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
public void initialize() {
frame = new JFrame();
frame.getContentPane().setBackground(Color.LIGHT_GRAY);
frame.setBounds(100, 100, 495, 311);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
textField = new JTextField();
textField.setBackground(Color.WHITE);
textField.setBounds(136, 58, 256, 20);
frame.getContentPane().add(textField);
textField.setColumns(10);
JLabel lblNewLabel = new JLabel("Enter Name");
lblNewLabel.setFont(new Font("Tahoma", Font.BOLD, 11));
lblNewLabel.setBounds(25, 60, 101, 17);
frame.getContentPane().add(lblNewLabel);
JLabel lblEnterPrelimGrade = new JLabel("Enter Prelim Grade");
lblEnterPrelimGrade.setFont(new Font("Tahoma", Font.BOLD, 11));
lblEnterPrelimGrade.setBounds(25, 119, 101, 17);
frame.getContentPane().add(lblEnterPrelimGrade);
prelim = new JTextField();
prelim.setColumns(10);
prelim.setBounds(136, 117, 55, 20);
frame.getContentPane().add(prelim);
midterm = new JTextField();
midterm.setColumns(10);
midterm.setBounds(136, 148, 55, 20);
frame.getContentPane().add(midterm);
prefinal = new JTextField();
prefinal.setColumns(10);
prefinal.setBounds(136, 179, 55, 20);
frame.getContentPane().add(prefinal);
pinal = new JTextField();
pinal.setColumns(10);
pinal.setBounds(136, 210, 55, 20);
frame.getContentPane().add(pinal);
JLabel lblEnterMidtermGrade = new JLabel("Enter Midterm Grade");
lblEnterMidtermGrade.setFont(new Font("Tahoma", Font.BOLD, 11));
lblEnterMidtermGrade.setBounds(25, 150, 101, 17);
frame.getContentPane().add(lblEnterMidtermGrade);
JLabel lblEnterPrefinalGrade = new JLabel("Enter Pre-final Grade");
lblEnterPrefinalGrade.setFont(new Font("Tahoma", Font.BOLD, 11));
lblEnterPrefinalGrade.setBounds(25, 181, 101, 17);
frame.getContentPane().add(lblEnterPrefinalGrade);
JLabel lblEnterFinalGrade = new JLabel("Enter Final Grade");
lblEnterFinalGrade.setFont(new Font("Tahoma", Font.BOLD, 11));
lblEnterFinalGrade.setBounds(25, 212, 101, 17);
frame.getContentPane().add(lblEnterFinalGrade);
JLabel label = new JLabel("20%");
label.setBounds(198, 119, 31, 17);
frame.getContentPane().add(label);
JLabel label_1 = new JLabel("20%");
label_1.setBounds(198, 150, 31, 17);
frame.getContentPane().add(label_1);
JLabel label_2 = new JLabel("20%");
label_2.setBounds(198, 181, 31, 17);
frame.getContentPane().add(label_2);
JLabel label_3 = new JLabel("40%");
label_3.setBounds(198, 212, 31, 17);
frame.getContentPane().add(label_3);
JButton btnNewButton = new JButton("Click to get total Average!");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
int first;
int second;
int third;
int fourth;
double grade;
first=Integer.parseInt(prelim.getText());
second=Integer.parseInt(midterm.getText());
third=Integer.parseInt(prefinal.getText());
fourth=Integer.parseInt(pinal.getText());
grade=first*.2+second*.2+third*.2+fourth*.4;
NumberFormat formatter = new DecimalFormat("#.##");
String grado=formatter.format(grade);
Frame2 s2= new Frame2();
JTextField lblgrade = new JTextField(grado);
lblgrade.setEditable(false);
lblgrade.setBounds(302, 204, 30, 26);
frame.getContentPane().add(lblgrade);
lblgrade.setColumns(10);
}
});
btnNewButton.setBackground(Color.LIGHT_GRAY);
btnNewButton.setFont(new Font("Tahoma", Font.BOLD | Font.ITALIC, 11));
btnNewButton.setBounds(255, 119, 184, 51);
frame.getContentPane().add(btnNewButton);
JLabel lblNewLabel_1 = new JLabel("GRADING SYSTEM");
lblNewLabel_1.setFont(new Font("Tahoma", Font.BOLD, 18));
lblNewLabel_1.setHorizontalAlignment(SwingConstants.CENTER);
lblNewLabel_1.setBounds(26, 11, 397, 36);
frame.getContentPane().add(lblNewLabel_1);
JLabel lblAverage = new JLabel("Average:");
lblAverage.setFont(new Font("Tahoma", Font.BOLD, 11));
lblAverage.setBounds(293, 182, 80, 14);
frame.getContentPane().add(lblAverage);
JLabel label_4 = new JLabel("%");
label_4.setBounds(342, 210, 27, 14);
frame.getContentPane().add(label_4);
}
}
`
Upvotes: 0
Views: 463
Reputation: 6089
Although your question is not clear about what you want to do with your second JFrame
, but you want to open a second JFrame
which in this case the Frame1
as in your example code, then you add the below exactly where you want to open the second JFrame
private static void luanch() {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Frame1 window = new Frame1();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
Call this method in your main method
public static void main(String[] args) {
luanch();
}
And also in where you want to open the second JFrame
grade=first*.2+second*.2+third*.2+fourth*.4;
NumberFormat formatter = new DecimalFormat("#.##");
String grado=formatter.format(grade);
//Frame2 s2= new Frame2();
luanch(); // here
JTextField lblgrade = new JTextField(grado);
Note: If you want to just show the message, then you ca use message dialog as below:
JOptionPane.showMessageDialog(frame, "Hi! "+textField.getText()+" Your average is "+grado+"%");
Upvotes: 2