利用Swing包中组件实现如下GUI包含学号姓名性别三项,给出JAVA代码并说明1.你用了几个容器,每个容器各是什么布局? 2.给出你的GUI中的组件包容关系 3.你的窗口可以关闭吗? 如果不能,应如何修改程序使其可以关闭。
时间: 2024-02-24 07:58:05 浏览: 60
好的,下面是代码和解释:
```java
import javax.swing.*;
import java.awt.*;
public class StudentInfoGUI extends JFrame {
private JLabel lblStuId, lblStuName, lblStuGender;
private JTextField txtStuId, txtStuName, txtStuGender;
private JButton btnSubmit;
public StudentInfoGUI() {
// 设置窗口标题
setTitle("学生信息");
// 设置窗口大小
setSize(300, 200);
// 设置窗口位置
setLocationRelativeTo(null);
// 设置窗口关闭时退出程序
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建容器
JPanel panel = new JPanel(new GridLayout(4, 2, 10, 10));
// 创建组件
lblStuId = new JLabel("学号:");
txtStuId = new JTextField(10);
lblStuName = new JLabel("姓名:");
txtStuName = new JTextField(10);
lblStuGender = new JLabel("性别:");
txtStuGender = new JTextField(10);
btnSubmit = new JButton("提交");
// 添加组件到容器
panel.add(lblStuId);
panel.add(txtStuId);
panel.add(lblStuName);
panel.add(txtStuName);
panel.add(lblStuGender);
panel.add(txtStuGender);
panel.add(btnSubmit);
// 将容器添加到窗口
setContentPane(panel);
}
public static void main(String[] args) {
StudentInfoGUI gui = new StudentInfoGUI();
gui.setVisible(true);
}
}
```
解释如下:
1. 我使用了一个JPanel容器来放置所有的组件,采用网格布局(GridLayout),4行2列,行间距和列间距均为10像素。
2. 组件包容关系:JPanel -> JLabel、JTextField、JButton。
3. 窗口可以关闭。在构造函数中调用了setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)方法,当用户点击窗口关闭按钮时,程序会退出。如果不想程序退出,可以调用setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE)方法,这样窗口关闭时只会销毁窗口而不退出程序。
阅读全文