实验目的:
-
熟练掌握布局管理器
实验要求:
(1)掌握布局管理器的使用
(2)代码应遵循Java编程规范,包含恰当的注释说明
实验内容:
1.仿照window计算器,实现计算器界面。
2.使用绝对定位,实现注册和登录界面。
实验1:仿照window计算器,实现计算器界面
源代码:
import javax.swing.*;
import java.awt.*;
// 定义一个名为Calculate的公共类
public class Calculate {
// 定义私有成员变量
private JFrame jFrame; // 窗口对象
private JTextField jTextField; // 文本输入框对象
private JLabel jLabelMenu; // 菜单标签对象
private JPanel panel; // 面板对象
private JButton[] jButtons; // 按钮数组对象
private JLabel[] jLabelArray; // 标签数组对象
// 构造方法
public Calculate() {
// 创建窗口对象并设置标题
jFrame = new JFrame("计算器");
// 设置窗口布局为null,即绝对布局
jFrame.setLayout(null);
// 创建菜单标签对象并设置文本、字体和位置
jLabelMenu = new JLabel(" ≡标准≡");
jLabelMenu.setFont(new Font("", Font.BOLD, 15));
jLabelMenu.setBounds(0, 0, 60, 40);
jFrame.add(jLabelMenu); // 将菜单标签添加到窗口中
// 创建文本输入框对象并设置字体、大小和位置
jTextField = new JTextField();
jTextField.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
jTextField.setFont(new Font("宋体", Font.BOLD, 50));
jTextField.setBounds(5, 45, 345, 100);
jFrame.add(jTextField); // 将文本输入框添加到窗口中
// 创建标签数组对象并初始化长度为6
jLabelArray = new JLabel[6];
String[] Tool = {"MC", "MR", "M+", "M-", "MS", "M﹀"};
for (int i = 0; i < 6; i++) {
// 创建标签对象并设置文本、前景色和位置
jLabelArray[i] = new JLabel(Tool[i]);
jLabelArray[i].setForeground(Color.GRAY);
jLabelArray[i].setBounds(15 + i * 60, 140, 40, 30);
jFrame.add(jLabelArray[i]); // 将标签添加到窗口中
}
// 创建面板对象并设置布局、大小和位置
panel = new JPanel(new GridLayout(6, 4, 5, 5));
panel.setBounds(5, 165, 345, 320);
// 定义按钮文本数组
String[] btnArry = {
"%", "CE", "C", "DEL",
"1/x", "x^2", "²√ ̄", "÷",
"7", "8", "9", "X",
"4", "5", "6", "-",
"1", "2", "3", "+",
"±", "0", ".", "="
};
// 创建按钮数组对象并初始化长度为24
jButtons = new JButton[24];
for (int i = 0; i < 24; i++) {
// 创建按钮对象并设置文本、背景色
jButtons[i] = new JButton(btnArry[i]);
jButtons[i].setFont(new Font("",Font.BOLD,15));
if(i<23) {
jButtons[i].setBackground(Color.WHITE);
}else{
jButtons[i].setBackground(Color.BLUE);
jButtons[i].setForeground(Color.WHITE);
}
panel.add(jButtons[i]); // 将按钮添加到面板中
}
jFrame.add(panel); // 将面板添加到窗口中
// 设置窗口大小、不可调整大小、位置和可见性
jFrame.setSize(370, 530);
jFrame.setResizable(false);
jFrame.setLocation(560, 130);
jFrame.setVisible(true);
}
}
public class Test {
public static void main(String[] args) {
new Calculate();
}
}
实验结果:
实验2:使用绝对定位,实现注册和登录界面
源代码:
import javax.swing.*;
import java.awt.*;
// 定义一个名为RegisterWindows的类,继承自JFrame
public class RegisterWindows extends JFrame {
// 定义组件变量
private JFrame jframe; // 注册窗口
private JLabel labelUser, labelPsw, labelSex, labelPro, labelHob; // 标签组件
private JTextField jtUser; // 用户名输入框
private JPasswordField jPwd; // 密码输入框
private JRadioButton jrBoy, jrGirl; // 性别单选按钮
private JComboBox<String> jcBox; // 专业下拉框
private JCheckBox jcDance, jcSing, jcRead; // 爱好复选框
private JButton btnRegister; // 注册按钮
private ButtonGroup group1; // 性别单选按钮组
// 构造方法
public RegisterWindows() {
// 初始化窗口
jframe = new JFrame("注册");
jframe.setLayout(null); // 设置布局管理器为空,使用绝对布局
// 初始化用户名标签和输入框
labelUser = new JLabel("用户名");
labelUser.setBounds(5, 5, 40, 30); // 设置标签位置和大小
jframe.add(labelUser); // 将标签添加到窗口中
jtUser = new JTextField(); // 创建用户名输入框
jtUser.setBounds(55, 5, 200, 30); // 设置输入框位置和大小
jframe.add(jtUser); // 将输入框添加到窗口中
// 初始化密码标签和输入框
labelPsw = new JLabel("密码");
labelPsw.setBounds(5, 45, 40, 30); // 设置标签位置和大小
jframe.add(labelPsw); // 将标签添加到窗口中
jPwd = new JPasswordField(); // 创建密码输入框
jPwd.setBounds(55, 45, 200, 30); // 设置输入框位置和大小
jframe.add(jPwd); // 将输入框添加到窗口中
// 初始化性别标签和单选按钮
labelSex = new JLabel("性别");
labelSex.setBounds(5, 85, 40, 30); // 设置标签位置和大小
jframe.add(labelSex); // 将标签添加到窗口中
jrBoy = new JRadioButton("男", true); // 创建男性单选按钮,默认选中
jrGirl = new JRadioButton("女"); // 创建女性单选按钮
jrBoy.setBounds(55, 85, 40, 30); // 设置男性单选按钮位置和大小
jrGirl.setBounds(100, 85, 40, 30); // 设置女性单选按钮位置和大小
group1 = new ButtonGroup(); // 创建单选按钮组
group1.add(jrBoy); // 将男性单选按钮添加到组中
group1.add(jrGirl); // 将女性单选按钮添加到组中
jframe.add(jrBoy); // 将男性单选按钮添加到窗口中
jframe.add(jrGirl); // 将女性单选按钮添加到窗口中
// 初始化专业标签和下拉框
labelPro = new JLabel("专业");
labelPro.setBounds(5, 125, 40, 30); // 设置标签位置和大小
jframe.add(labelPro); // 将标签添加到窗口中
jcBox = new JComboBox<String>(); // 创建专业下拉框
jcBox.setBounds(55, 125, 150, 30); // 设置下拉框位置和大小
jcBox.addItem("计算机科学与技术"); // 添加计算机科学与技术选项
jcBox.addItem("软件工程"); // 添加软件工程选项
jcBox.addItem("大数据"); // 添加大数据选项
jframe.add(jcBox); // 将下拉框添加到窗口中
// 初始化爱好标签和复选框
labelHob = new JLabel("爱好");
labelHob.setBounds(5, 165, 40, 30); // 设置标签位置和大小
jframe.add(labelHob); // 将标签添加到窗口中
jcDance = new JCheckBox("跳舞"); // 创建跳舞复选框
jcSing = new JCheckBox("唱歌"); // 创建唱歌复选框
jcRead = new JCheckBox("阅读"); // 创建阅读复选框
jcDance.setBounds(55, 165, 60, 30); // 设置跳舞复选框位置和大小
jcSing.setBounds(105, 165, 60, 30); // 设置唱歌复选框位置和大小
jcRead.setBounds(155, 165, 60, 30); // 设置阅读复选框位置和大小
jframe.add(jcDance); // 将跳舞复选框添加到窗口中
jframe.add(jcSing); // 将唱歌复选框添加到窗口中
jframe.add(jcRead); // 将阅读复选框添加到窗口中
// 初始化注册按钮
btnRegister = new JButton("注册");
btnRegister.setBounds(155, 205, 60, 30); // 设置按钮位置和大小
jframe.add(btnRegister); // 将按钮添加到窗口中
// 设置窗口大小和位置
jframe.setSize(400, 300);
jframe.setLocation(560, 280);
jframe.setVisible(true); // 设置窗口可见
}
}
public class Test1 {
public static void main(String[] args) {
new RegisterWindows();
}
}
实验结果:
实验总结:
在本次实验中,我们的目标是熟练掌握布局管理器的使用。通过完成两个实验内容,我们成功地达到了这个目标。
首先,我们仿照Windows计算器实现了一个计算器界面。在这个过程中,我们学习了如何使用布局管理器来安排计算器的各个组件,如按钮、显示屏等。我们尝试了不同的布局管理器,如GridLayout、BorderLayout等,以便更好地组织计算器的布局。接下来,我们使用绝对定位实现了注册和登录界面。通过设置组件的确切位置,我们能够精确地控制界面的外观。这使得我们能够根据需求调整组件的位置,以实现更美观的界面。在整个实验过程中,我们始终遵循Java编程规范,确保代码具有良好的可读性和可维护性。我们还为代码添加了恰当的注释说明,以帮助其他人理解我们的实现思路。