JAVA 2. Student类及相应的图形用户界面 【问题描述】 设计一个Student类并编写代码,Student类的属性有姓名,出生年、月、日;自定义的方法:至少包括计算学生年龄的方法calAge()。编写一个GUI类,输入学生的姓名和出生年、月、日,由此创建这个Student对象,调用Student类的方法calAge(),计算出该学生的年龄,并将年龄显示在用户界面上。
时间: 2024-02-22 19:55:35 浏览: 71
好的,这道题目已经在之前的问题中回答过了,这里再重复一遍。下面是Java代码实现。首先是Student类的代码:
```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 String getName() {
return name;
}
public LocalDate getBirthDate() {
return birthDate;
}
public int calAge() {
LocalDate currentDate = LocalDate.now();
Period period = Period.between(birthDate, currentDate);
return period.getYears();
}
}
```
其中,我们使用了Java 8的新特性LocalDate和Period来计算学生的年龄,具体实现可以看代码中的注释。
接下来是GUI类的代码:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.time.LocalDate;
public class StudentGUI extends JFrame {
private JTextField nameField;
private JTextField yearField;
private JTextField monthField;
private JTextField dayField;
private JLabel ageLabel;
public StudentGUI() {
super("Student Information");
// 设置窗口大小和位置
setSize(400, 200);
setLocationRelativeTo(null);
// 设置窗口关闭操作
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建组件
JLabel nameLabel = new JLabel("Name:");
nameField = new JTextField(20);
JLabel birthLabel = new JLabel("Birth:");
yearField = new JTextField(4);
monthField = new JTextField(2);
dayField = new JTextField(2);
JButton calculateButton = new JButton("Calculate");
ageLabel = new JLabel();
// 设置布局管理器
setLayout(new GridLayout(4, 2));
// 添加组件
add(nameLabel);
add(nameField);
add(birthLabel);
add(yearField);
add(new JLabel("-"));
add(monthField);
add(new JLabel("-"));
add(dayField);
add(calculateButton);
add(ageLabel);
// 添加事件监听器
calculateButton.addActionListener(new ActionListener() {
@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 = new Student(name, year, month, day);
int age = student.calAge();
ageLabel.setText("Age: " + age);
}
});
}
public static void main(String[] args) {
StudentGUI gui = new StudentGUI();
gui.setVisible(true);
}
}
```
在GUI类中,我们使用了Swing来创建用户界面,包括文本框、标签、按钮等组件。在按钮的事件监听器中,我们根据用户输入的信息创建了一个Student对象,并调用其calAge()方法计算学生的年龄,最后将年龄显示在标签上。
如果您将这两段代码保存为Student.java和StudentGUI.java,然后编译运行StudentGUI.java,就可以看到一个简单的GUI界面,可以输入学生的信息并计算学生的年龄了。
阅读全文