实验目的:
熟悉awt组件和三种基本布局,掌握按钮、文本框、标签、等基本控件的使用和事件响应编程。
熟悉布局管理器
1. 窗体关闭事件
💖 WindowCloseEvent.java
import java.awt.event.WindowAdapter; // 导入WindowAdapter类,用于处理窗口事件
import java.awt.event.WindowEvent; // 导入WindowEvent类,用于表示窗口事件import javax.swing.*; // 导入Swing包,用于创建和管理图形用户界面// 创建一个继承自JFrame的类,用于处理窗口关闭事件
public class WindowCloseEvent extends JFrame
{// 构造函数,初始化窗口public WindowCloseEvent(){// 设置窗口标题this.setTitle("窗体关闭事件");// 设置窗口大小this.setSize(600, 300);// 设置默认关闭操作,当窗口关闭时退出程序this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 添加一个窗口监听器,用于监听窗口关闭事件this.addWindowListener(new WindowAdapter(){// 重写窗口关闭事件处理方法@Overridepublic void windowClosing(WindowEvent e){// 当窗口关闭时,退出程序System.exit(0);}});}// 主函数,程序的入口点public static void main(String[] args){// 创建WindowCloseEvent类的实例,即创建一个窗口WindowCloseEvent window = new WindowCloseEvent();// 设置窗口可见window.setVisible(true);}
}
💖 输出结果
2. 流式布局
三个按钮,点击按钮改变字体颜色,写出实现代码,贴出运行效果。
💖 FlowLayoutButton.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;public class FlowLayoutButton extends JFrame
{private JButton button1, button2, button3;private JLabel label;public FlowLayoutButton(){// 设置窗口标题this.setTitle("流式布局按钮");// 设置窗口大小this.setSize(300, 200);// 设置布局为流式布局this.setLayout(new FlowLayout());// 创建按钮1button1 = new JButton("按钮1");// 创建按钮2button2 = new JButton("按钮2");// 创建按钮3button3 = new JButton("按钮3");// 创建标签label = new JLabel("点击按钮改变字体颜色");// 为按钮1添加事件监听器button1.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e){// 当按钮1被点击时,改变标签的字体颜色为红色label.setForeground(Color.RED);}});// 为按钮2添加事件监听器button2.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e){// 当按钮2被点击时,改变标签的字体颜色为绿色label.setForeground(Color.GREEN);}});// 为按钮3添加事件监听器button3.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e){// 当按钮3被点击时,改变标签的字体颜色为蓝色label.setForeground(Color.BLUE);}});// 将按钮和标签添加到窗口中this.add(button1);this.add(button2);this.add(button3);this.add(label);}public static void main(String[] args){// 创建FlowLayoutButton类的实例,即创建一个窗口FlowLayoutButton window = new FlowLayoutButton();// 设置窗口可见window.setVisible(true);}
}
💖 输出结果
3. 网格布局
录入QQ号,不是数字不让录入,写出实现代码,贴出运行效果。
💖 源代码:GridLayoutQQ.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;public class GridLayoutQQ extends JFrame
{// 创建一个文本输入框private JTextField textField;// 创建一个标签private JLabel label;// 构造函数,初始化窗口public GridLayoutQQ(){// 设置窗口标题this.setTitle("网格布局QQ号输入");// 设置窗口大小this.setSize(300, 200);// 设置布局为网格布局,2行2列this.setLayout(new GridLayout(2, 2));// 创建一个文本输入框,长度为10textField = new JTextField(10);// 创建一个标签,提示用户输入QQ号label = new JLabel("请输入QQ号:");// 为文本输入框添加键盘事件监听器textField.addKeyListener(new KeyAdapter(){// 重写键盘事件处理方法@Overridepublic void keyTyped(KeyEvent e){// 获取按下的键的字符char c = e.getKeyChar();// 如果按下的键不是数字,则不处理if (!Character.isDigit(c)){e.consume();}}});// 将标签和文本输入框添加到窗口中this.add(label);this.add(textField);}// 主函数,程序的入口点public static void main(String[] args){// 创建GridLayoutQQ类的实例,即创建一个窗口GridLayoutQQ window = new GridLayoutQQ();// 设置窗口可见window.setVisible(true);}
}
💖 输出结果
4. 边界布局
实现鼠标事件案例:鼠标移动到按钮上改变背景颜色,写出实现代码,贴出运行效果。
💖 源代码:BorderLayoutMouse.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;public class BorderLayoutMouse extends JFrame
{// 创建一个按钮private JButton button;// 构造函数,初始化窗口public BorderLayoutMouse(){// 设置窗口标题this.setTitle("边界布局鼠标事件");// 设置窗口大小this.setSize(300, 200);// 设置布局为边界布局this.setLayout(new BorderLayout());// 创建一个按钮,显示文本为"按钮"button = new JButton("按钮");// 为按钮添加鼠标事件监听器button.addMouseListener(new MouseAdapter(){// 重写鼠标进入事件处理方法@Overridepublic void mouseEntered(MouseEvent e){// 当鼠标进入按钮时,改变按钮的背景颜色为黄色button.setBackground(Color.YELLOW);}// 重写鼠标离开事件处理方法@Overridepublic void mouseExited(MouseEvent e){// 当鼠标离开按钮时,改变按钮的背景颜色为白色button.setBackground(Color.WHITE);}});// 将按钮添加到窗口的中心区域this.add(button, BorderLayout.CENTER);}// 主函数,程序的入口点public static void main(String[] args){// 创建BorderLayoutMouse类的实例,即创建一个窗口BorderLayoutMouse window = new BorderLayoutMouse();// 设置窗口可见window.setVisible(true);}
}
💖 运行结果
5. Eclipse中安装WindowBuilder插件
- 👨🏫 安装教程
不知道成没成功
6. 实现登陆功能
如果用户名密码正确,则跳转到新界面,并显示欢迎您:***。用户名与登陆时到输入到内容一致。若用户名或密码错误则弹出对话框提示。
💖 LoginFrame.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class LoginFrame extends JFrame
{
// 创建一个文本输入框,用于输入用户名private JTextField usernameField;
// 创建一个密码输入框,用于输入密码private JPasswordField passwordField;
// 创建一个登录按钮private JButton loginButton;// 构造函数,初始化窗口public LoginFrame(){// 设置窗口标题setTitle("登录界面");// 设置窗口大小setSize(800, 300);// 设置默认关闭操作,当窗口关闭时退出程序setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置布局为网格布局,3行2列setLayout(new GridLayout(3, 2));// 添加一个标签,提示用户输入用户名add(new JLabel("用户名:"));// 创建一个文本输入框,用于输入用户名usernameField = new JTextField();// 将文本输入框添加到窗口中add(usernameField);// 添加一个标签,提示用户输入密码add(new JLabel("密码:"));// 创建一个密码输入框,用于输入密码passwordField = new JPasswordField();// 将密码输入框添加到窗口中add(passwordField);// 创建一个登录按钮loginButton = new JButton("登录");// 为登录按钮添加事件监听器loginButton.addActionListener(new ActionListener(){// 重写事件处理方法@Overridepublic void actionPerformed(ActionEvent e){// 获取文本输入框和密码输入框中的内容String username = usernameField.getText();String password = new String(passwordField.getPassword());// 判断用户名和密码是否正确if (username.equals("lighting") && password.equals("123")){// 如果正确,显示欢迎信息,并打开欢迎界面JOptionPane.showMessageDialog(LoginFrame.this, "登录成功");WelcomeFrame welcomeFrame = new WelcomeFrame(username);welcomeFrame.setVisible(true);LoginFrame.this.setVisible(false);} else{// 如果错误,显示错误信息JOptionPane.showMessageDialog(LoginFrame.this, "用户名或密码错误");}}});// 将登录按钮添加到窗口中add(loginButton);}// 主函数,程序的入口点public static void main(String[] args){// 创建LoginFrame类的实例,即创建一个窗口LoginFrame loginFrame = new LoginFrame();// 设置窗口可见loginFrame.setVisible(true);}
}// WelcomeFrame类继承自JFrame,用于显示欢迎信息
class WelcomeFrame extends JFrame
{
// 构造函数,初始化窗口public WelcomeFrame(String username){
// 设置窗口标题setTitle("欢迎界面");
// 设置窗口大小setSize(300, 200);
// 设置默认关闭操作,当窗口关闭时退出程序setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置布局为网格布局,2行1列setLayout(new GridLayout(2, 1));// 添加一个标签,显示欢迎信息add(new JLabel("欢迎 " + username + "!"));// 创建一个退出按钮JButton exitButton = new JButton("退出");// 为退出按钮添加事件监听器exitButton.addActionListener(new ActionListener(){// 重写事件处理方法@Overridepublic void actionPerformed(ActionEvent e){// 当按钮被点击时,退出程序System.exit(0);}});// 将退出按钮添加到窗口中add(exitButton);}
}