📄 studentgrades.java
字号:
// Tutorial 17: StudentGrades.java
// This application computes each student's grade average and
// the class average for ten students.
import java.awt.*;
import java.awt.event.*;
import java.text.*;
import javax.swing.*;
import javax.swing.border.*;
public class StudentGrades extends JFrame
{
// JPanel for user inputs
private JPanel inputGradeJPanel;
// JLabel and JTextField for student name
private JLabel studentNameJLabel;
private JTextField studentNameJTextField;
// JLabel and JTextField for test 1 score
private JLabel test1JLabel;
private JTextField test1JTextField;
// JLabel and JTextField for test 2 score
private JLabel test2JLabel;
private JTextField test2JTextField;
// JLabel and JTextField for test 3 score
private JLabel test3JLabel;
private JTextField test3JTextField;
// JButton to calculate student and class average
private JButton submitGradesJButton;
// ButtonGroup to control numeric and letter JRadioButtons
private ButtonGroup displayButtonGroup;
// JRadioButtons to choose to display numerically or as letters
private JRadioButton numericJRadioButton;
private JRadioButton letterJRadioButton;
// JLabel and JTextArea to display student averages
private JLabel displayJLabel;
private JTextArea displayJTextArea;
// JLabel and JTextField to display the class average
private JLabel classAverageJLabel;
private JTextField classAverageJTextField;
// initialize number of students to zero
private int studentCount = 0;
// constants
private final int NUMBER_OF_TESTS = 3;
private final int MAXIMUM_STUDENTS = 10;
private final int FIRST_TEST = 0;
private final int SECOND_TEST = 1;
private final int THIRD_TEST = 2;
// one-dimensional array to store student names
private String studentNames[] = new String[ MAXIMUM_STUDENTS ];
// two-dimensional array to store student grades
private int studentGrades[][] =
new int[ MAXIMUM_STUDENTS ][ NUMBER_OF_TESTS ];
// DecimalFormat for two digits of precision
private DecimalFormat twoDigits = new DecimalFormat( "0.00" );
// no-argument constructor
public StudentGrades()
{
createUserInterface();
}
// create and position GUI components; register event handlers
private void createUserInterface()
{
// get content pane for attaching GUI components
Container contentPane = getContentPane();
// enable explicit positioning of GUI components
contentPane.setLayout( null );
// set up inputGradeJPanel
inputGradeJPanel = new JPanel();
inputGradeJPanel.setBounds( 16, 16, 208, 218 );
inputGradeJPanel.setBorder(
new TitledBorder( "Input Grade" ) );
inputGradeJPanel.setLayout( null );
contentPane.add( inputGradeJPanel );
// set up studentNameJLabel
studentNameJLabel = new JLabel();
studentNameJLabel.setBounds( 8, 32, 90, 23 );
studentNameJLabel.setText( "Student Name:" );
inputGradeJPanel.add( studentNameJLabel );
// set up studentNameJTextField
studentNameJTextField = new JTextField();
studentNameJTextField.setBounds( 104, 32, 88, 21 );
studentNameJTextField.setHorizontalAlignment(
JTextField.RIGHT );
inputGradeJPanel.add( studentNameJTextField );
// set up test1JLabel
test1JLabel = new JLabel();
test1JLabel.setBounds( 8, 74, 60, 23 );
test1JLabel.setText( "Test 1:" );
inputGradeJPanel.add( test1JLabel );
// set up test1JTextField
test1JTextField = new JTextField();
test1JTextField.setBounds( 136, 74, 56, 21 );
test1JTextField.setHorizontalAlignment( JTextField.RIGHT );
inputGradeJPanel.add( test1JTextField );
// set up test2JLabel
test2JLabel = new JLabel();
test2JLabel.setBounds( 8, 98, 60, 23 );
test2JLabel.setText( "Test 2:" );
inputGradeJPanel.add( test2JLabel );
// set up test2JTextField
test2JTextField = new JTextField();
test2JTextField.setBounds( 136, 98, 56, 21 );
test2JTextField.setHorizontalAlignment( JTextField.RIGHT );
inputGradeJPanel.add( test2JTextField );
// set up test3JLabel
test3JLabel = new JLabel();
test3JLabel.setBounds( 8, 122, 60, 23 );
test3JLabel.setText( "Test 3:" );
inputGradeJPanel.add( test3JLabel );
// set up test3JTextField
test3JTextField = new JTextField();
test3JTextField.setBounds( 136, 122, 56, 21 );
test3JTextField.setHorizontalAlignment( JTextField.RIGHT );
inputGradeJPanel.add( test3JTextField );
// set up submitGradesJButton
submitGradesJButton = new JButton();
submitGradesJButton.setBounds( 72, 182, 120, 24 );
submitGradesJButton.setText( "Submit Grades" );
inputGradeJPanel.add( submitGradesJButton );
submitGradesJButton.addActionListener(
new ActionListener() // anonymous inner class
{
// event handler called when submitGradesJButton
// is clicked
public void actionPerformed( ActionEvent event )
{
submitGradesJButtonActionPerformed( event );
}
} // end anonymous inner class
); // end call to addActionListener
// set up displayButtonGroup
displayButtonGroup = new ButtonGroup();
// set up numericJRadioButton
numericJRadioButton = new JRadioButton();
numericJRadioButton.setBounds( 55, 244, 75, 23 );
numericJRadioButton.setText( "Numeric" );
numericJRadioButton.setSelected( true );
displayButtonGroup.add( numericJRadioButton );
contentPane.add( numericJRadioButton );
numericJRadioButton.addActionListener(
new ActionListener() // anonymous inner class
{
// event handler called when numericJRadioButton
// is selected
public void actionPerformed( ActionEvent event )
{
numericJRadioButtonActionPerformed( event );
}
} // end anonymous inner class
); // end call to addActionListener
// set up letterJRadioButton
letterJRadioButton = new JRadioButton();
letterJRadioButton.setBounds( 140, 244, 75, 23 );
letterJRadioButton.setText( "Letter" );
displayButtonGroup.add( letterJRadioButton );
contentPane.add( letterJRadioButton );
letterJRadioButton.addActionListener(
new ActionListener() // anonymous inner class
{
// event handler called when letterJRadioButton
// is selected
public void actionPerformed( ActionEvent event )
{
letterJRadioButtonActionPerformed( event );
}
} // end anonymous inner class
); // end call to addActionListener
// set up displayJLabel
displayJLabel = new JLabel();
displayJLabel.setBounds( 240, 16, 150, 23 );
displayJLabel.setText( "Average of each student:" );
contentPane.add( displayJLabel );
// set up displayJTextArea
displayJTextArea = new JTextArea();
displayJTextArea.setBounds( 240, 48, 402, 184 );
displayJTextArea.setEditable( false );
contentPane.add( displayJTextArea );
// set up classAverageJLabel
classAverageJLabel = new JLabel();
classAverageJLabel.setBounds( 490, 244, 96, 23 );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -