|## 1. JFrame 介绍
示例窗体
JFrame jf = new JFrame();
jf.setSize(450, 600); //设置窗口的 宽度 和 高度(单位是像素)。
jf.setTitle("登录界面"); //设置窗口的 标题,显示在窗口的最上方(标题栏)。
jf.setLocationRelativeTo(null); // 居中显示
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗口关闭时的 行为。
jf.setVisible(true); //窗口默认是不可见的,必须调用 setVisible(true) 让它显示出来。
JFrame 的常用方法
方法 | 作用 |
---|---|
setSize(int width, int height) | 设置窗口大小 |
setTitle(String title) | 设置窗口标题 |
setVisible(boolean visible) | 显示/隐藏窗口 |
setDefaultCloseOperation(int operation) | 关闭窗口时的行为 |
setLocationRelativeTo(Component c) | 设置窗口相对 c 居中,null 表示屏幕居中 |
setResizable(boolean resizable) | 是否允许用户调整窗口大小 |
getContentPane().add(Component c) | 添加组件到窗口 |
setDefaultCloseOperation 参数含义
值 | 代表的常量 | 作用 |
---|---|---|
0 | DO_NOTHING_ON_CLOSE | 关闭窗口但不做任何处理 |
1 | HIDE_ON_CLOSE | 关闭窗口但不退出程序(默认) |
2 | DISPOSE_ON_CLOSE | 关闭窗口并释放资源,但不退出 |
3 | EXIT_ON_CLOSE | 关闭窗口并退出程序 |
2流式布局管理器
控制容器中组件的排列方式。它的工作原理类似于文本的排版方式——将组件按顺序排列,直到一行填满为止,然后开始新的一行。可以理解为一个“流式”的布局管理器。
示例:
// 参数:对齐方式,水平间距,垂直间距
FlowLayout flow = new FlowLayout(FlowLayout.CENTER, 10, 20);
jf.setLayout(flow);
1.对齐方式:FlowLayout.CENTER 表示将所有组件居中对齐。如果你更改为 FlowLayout.LEFT,组件将从左侧开始排列,FlowLayout.RIGHT 则是右对齐。
2.水平间距 (hgap):这里设置为 10,表示每个组件之间的水平间距为 10 像素。
3.垂直间距 (vgap):这里设置为 20,表示每个组件之间的垂直间距为 20 像素。
3.加载图片
示例:
//加载图片
ImageIcon image = new ImageIcon("D:\\chen\\图片\\1.jpg");
//标签
JLabel jla = new JLabel(image); //创建 JLabel 来显示图片
jf.add(jla); //将标签添加到容器
图像缩放
Image img = image.getImage(); // 获取原始图像
Image scaledImg = img.getScaledInstance(600, 400, Image.SCALE_SMOOTH); // 缩放到 600x400
image = new ImageIcon(scaledImg); // 创建新的 ImageIcon
4.提示信息
示例:
JLabel user = new JLabel("账号");
jf.add(user);
JLabel 是 Swing 中用于显示文本、图像或两者结合的组件。
5. 账号框
示例:
JTextField jtf = new JTextField();
//除了JFrame,其它组件上设置大小都是该方法
Dimension dm = new Dimension(370,30);
jtf.setPreferredSize(dm);
jf.add(jtf);
JTextField:这是一个用来显示和编辑文本的组件。它通常用于获取用户的输入。
Dimension:Dimension 类用于表示一个尺寸,它包含两个属性:宽度 (width) 和高度 (height)。
6 按钮
1.示例
JButton jbu = new JButton("登录");
jf.add(jbu);
//设置可见,所有的组件在可见之前添加
jf.setVisible(true);
2.设置按钮的字体:
jbu.setFont(new Font("Arial", Font.BOLD, 16)); // 设置字体为 Arial,粗体,字号为 16
3.设置按钮的背景和前景颜色:
jbu.setBackground(Color.BLUE); // 设置背景色
jbu.setForeground(Color.WHITE); // 设置文本颜色
4.设置按钮的大小
jbu.setPreferredSize(new Dimension(150, 40)); // 设置按钮大小
5.设置按钮的边框:
jbu.setBorder(BorderFactory.createLineBorder(Color.BLACK)); // 创建黑色边框
6.按钮的状态控制:
jbu.setEnabled(false); // 禁用按钮,按钮不可点击,反之为true
7.设置按钮按下时的效果
ImageIcon pressedIcon = new ImageIcon("pressed_icon.png");
ImageIcon rolloverIcon = new ImageIcon("rollover_icon.png");
jbu.setPressedIcon(pressedIcon); // 按下按钮时显示的图标
jbu.setRolloverIcon(rolloverIcon); // 鼠标悬停按钮时显示的图标
8.设置按钮的透明度(设置按钮背景透明)
jbu.setOpaque(false);
// 使按钮背景透明
9.设置按钮的工具提示
按钮的工具提示是鼠标悬停在按钮上时显示的一些帮助文本。
jbu.setToolTipText("点击登录以进入系统"); // 设置工具提示文本
监听器
在 Java 中,监听器(Listener)是用于响应用户操作(如点击、输入、拖动等)的组件。通过事件驱动编程模型,当用户在界面上执行某个操作时,系统会触发相应的事件,并通过监听器来处理这些事件。
示例:
//给登录按钮添加动作监听器方法
//接口不能直接创建对象:重新定义类实现(继承)接口,重写接口中的抽象方法
ButtonListener listener = new ButtonListener();
jbu.addActionListener(listener);
//把账号框对象传递给ButtonListener类
listener.userField = jtf;
package com.jk.listener0208;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//事件处理类
//实现接口一定要重写接口中的抽象方法
public class ButtonListener implements ActionListener {
//默认注册账号,密码
public String name="123";
//引用传递(初始化属性)
public JTextField userField; //保存传递过来的账号框对象
//重写接口中的抽象方法
//事件处理方法
public void actionPerformed(ActionEvent e){
//获取输入的账号,密码
String userName = userField.getText();
//验证账号,密码
//比较字符串内容是否一致必须用equals方法
if(name.equals(userName) ){
System.out.println("yes");
//显示新界面
}else{
System.out.println("no");
}
System.out.println("点击按钮!userName = "+userName);
}
}
Java 中的事件监听器分为多种类型,每种监听器都对应不同的事件类型。常见的监听器包括:
- ActionListener:用于处理按钮点击、菜单项选择等动作事件。
- MouseListener:用于处理鼠标事件(如点击、进入、离开等)。
- KeyListener:用于处理键盘事件(如按键、释放键等)。
- WindowListener:用于处理窗口事件(如窗口打开、关闭等)。
- FocusListener:用于处理组件焦点事件(如获得或失去焦点)。
- ItemListener:用于处理复选框、单选框等选择性组件的状态改变事件。