JAVA 2. Student类及相应的图形用户界面 【问题描述】 设计一个Student类并编写代码,Student类的属性有姓名,出生年、月、日;自定义的方法:至少包括计算学生年龄的方法calAge()。编写一个GUI类,输入学生的姓名和出生年、月、日,由此创建这个Student对象,调用Student类的方法calAge(),计算出该学生的年龄,并将年龄显示在用户界面上。(大致界面如下,是否加背景、是否使用滚动窗格自行决定
时间: 2024-02-19 11:02:30 浏览: 70
下面是一个实现上述要求的Java代码示例:
Student.java
```java
import java.time.LocalDate;
import java.time.Period;
public class Student {
private String name;
private LocalDate birthDate;
public Student(String name, int year, int month, int day) {
this.name = name;
this.birthDate = LocalDate.of(year, month, day);
}
public int calAge() {
return Period.between(this.birthDate, LocalDate.now()).getYears();
}
public String getName() {
return this.name;
}
}
```
GUI.java
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class GUI extends JFrame implements ActionListener {
private JTextField nameField;
private JTextField yearField;
private JTextField monthField;
private JTextField dayField;
private JButton submitButton;
private JLabel ageLabel;
public GUI() {
// 设置窗口标题
setTitle("Student Age Calculator");
// 创建组件
JLabel nameLabel = new JLabel("Name:");
nameField = new JTextField(20);
JLabel birthLabel = new JLabel("Birth Date:");
yearField = new JTextField(4);
monthField = new JTextField(2);
dayField = new JTextField(2);
submitButton = new JButton("Submit");
ageLabel = new JLabel();
// 设置布局
setLayout(new GridLayout(3, 2));
// 添加组件
add(nameLabel);
add(nameField);
add(birthLabel);
JPanel birthPanel = new JPanel(new GridLayout(1, 3));
birthPanel.add(yearField);
birthPanel.add(monthField);
birthPanel.add(dayField);
add(birthPanel);
add(submitButton);
add(ageLabel);
// 设置事件监听
submitButton.addActionListener(this);
// 设置窗口大小并显示
setSize(400, 150);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@Override
public void actionPerformed(ActionEvent e) {
// 从输入框中获取数据
String name = nameField.getText();
int year = Integer.parseInt(yearField.getText());
int month = Integer.parseInt(monthField.getText());
int day = Integer.parseInt(dayField.getText());
// 创建Student对象并计算年龄
Student student = new Student(name, year, month, day);
int age = student.calAge();
// 在界面上显示年龄
ageLabel.setText("Age: " + age);
}
public static void main(String[] args) {
new GUI();
}
}
```
这个程序实现了一个简单的图形用户界面,用于输入学生的姓名和出生年、月、日,创建一个Student对象并计算该学生的年龄,最后在界面上显示该学生的年龄。用户可以通过输入框输入信息,点击“Submit”按钮来触发计算和显示操作。
阅读全文