目录
一、界面开发部分
1.界面开发组成部分
常见界面一般由三个部分组成,有可视化部分,元素部分和内容部分。
可视化组件包含窗体,按钮,输入框等。元素部分包含尺寸,字体,颜色,布局等。内容部分包含文本,图片等。
2.界面开发包
首先了解一下包的概念:包 - package,作用是管理分类代码文件的,一般可以通过右键src文件夹new Package创建自己的包。
Java的源代码中也是使用包来分类源代码文件,今天我们使用的包就是java.awt和javax.swing这两个包。其中java.awt是Java早期的界面开发包,功能不全,样式老旧,所以只保留其中的元素规则类。而javax.swing包为JDK1.2推出时新增,该包功能更为强大。这里主要使用可视化组件类。
使用界面开发包需要先导入包路径:
import 包路径.*;
3.开发一个登录界面需要使用到的类有哪些
java.awt:
FlowLayout//流式布局
color
Dimension
javax.swing:
JFrame
JButton//按钮类
4.创建界面的开发步骤
1.创建一个类LoginUI
public class LoginUI{
}
2.创建一个方法showUI
public class LoginUI{
public void showUI(){
}
}
3.创建一个程序入口 创建LoginUI对象调用showUI方法
public class LoginUI{
public void showUI(){
}
public static void main(String[] args){
//创建对象
LoginUI loginUI = new LoginUI();
//调用方法
loginUI.showUI();
}
}
4.在class前导入界面开发包
import java.awt.*;
import javax.swing.*;
//导入界面开发包
public class LoginUI{
public void showUI(){
}
public static void main(String[] args){
//创建对象
LoginUI loginUI = new LoginUI();
//调用方法
loginUI.showUI();
}
}
5.创建一个窗体类对象JFrame
JFrame jf=new JFrame();
6.设置窗体类对象的属性:
设置方法:通过窗体对象jf调用对应的设置方法
jf.setxxx(值);
jf.setTitle("登录界面");//标题
jf.setSize(400,350);//尺寸
jf.setLocation(800,100);//位置
布局:
1.创建流式布局对象:FlowLayout
FlowLayout fl = new FlowLayout();
2.设置布局
jf.setLayout(fl);
可视化:
jf.setVisible(ture);
7.创建组件对象 加载到窗体中
组件:按钮类 标签类 输入框 密码输入框
JButton logbtn = new JButton("登录");//登录按钮
JLabel nameJla = new JLabel("账号:");//一个标签对象,加载“账号”
JTextField nameJTf = new JTextField(30);//一个输入框对象,用来加载账号
JLabel pwJla = new JLabel("密码:");//一个标签对象,加载“密码”
JPasswordField pwJwf = new JPasswordField(30);//一个密码输入框,用来输入密码
内容:字符串 图标类
ImageIcon icon = new ImageIcon("C:\Users\zxp-st\Desktop\1699790398863.png");
//创建一个图标类
JLabel iconJla = new JLabel(icon);
// 导入界面开发包
import java.awt.*;
import javax.swing.*;
public class LogiUI {
// 属性: 这个类不写属性 就一个方法
// 显示界面: 将创建窗体的代码都放在这个方法中
public void showUI() {// 1: 创建一个窗体类对象
JFrame jf = new JFrame();// 2: 设置窗体对象的标题
jf.setTitle("登录界面");// 3: 设置窗体对象的大小
jf.setSize(400, 350);// 4: 设置窗体对象的位置 窗体左上角坐标
jf.setLocation(800, 100);// 5: 创建一个流式布局对象
FlowLayout fl = new FlowLayout();// 6: 设置窗体对象的布局方式为流式布局
jf.setLayout(fl);
jf.setVisible(true);// 7: 设置窗体可见 可视化设置 显示到屏幕上
ImageIcon icon = new ImageIcon();// 8: 创建一个图标对象
JLabel iconJla = new JLabel(icon);// 标签加载图片
JLabel nameJla = new JLabel("账号:");
JTextField nameJtf = new JTextField(30);// 30个字符数的宽度
JLabel pwdJla = new JLabel("密码:");
JPasswordField pwdJtf = new JPasswordField(30);
JButton btn = new JButton("登录");
// 将创建好的组件对象 加载到窗体对象上 jf.add(组件对象);
jf.add(iconJla);// 加载了图标的标签
jf.add(nameJla);// 账号文本标签
jf.add(nameJtf);// 文本输入框
jf.add(pwdJla);// 密码标签
jf.add(pwdJtf);// 密码输入框
jf.add(btn);// 按钮
jf.setVisible(true);//可视化设置 显示到屏幕上
}
// 程序入口
public static void main(String[] args) {
// 创建对象 :
LoginUI loginUI = new LoginUI();
// 调用方法:
loginUI.showUI();
}
}
二、监听器
Java规定能触发ActionEvent事件的组件使用方法addActionListener 将实现ActionListener接口的类的实例注册为事件源的监听器。
1.ActionListener接口
ActionListener接口在Java.awt.event包中,该接口只有一个方法
public void actionPerformed(ActionEvent e);
2.实现步骤
1.创建一个类 LoginAction
public class LoginAction{
}
2.使用LoginAction 实现ActionListener
public class LoginAction implements ActionListener{ }
3.将抽象方法在LoginAction重写一遍actionPerformed
public void actionPerformed(ActionEvent e){ }
4.创建LoginAction对象,使用按钮对象调用addActionListener注册这个监听对象
LoginAction loginAction = new LoginAction();
btn.addActionListener(loginAction);
//当登录按钮被点击时就会调用loginAction的actionPerformed方法
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
// 我们自己创建一个自己的监听器类
public class LoginAction implements ActionListener {
// 这个方法是被监听的按钮点击时自动调用
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("按钮被点击了");
}
}
public class LoginUI {
public void showUI() {
JFrame jf = new JFrame();
jf.setTitle("登录");
jf.setSize(400, 300);
jf.setLocation(800, 500);
jf.setLayout(new FlowLayout());
JButton btn = new JButton("登录");
jf.add(btn);
jf.setVisible(true);
// 当登录按钮被点击时 就会调用 loginAction的 actionPerformed方法
LoginAction loginAction = new LoginAction();
btn.addActionListener(loginAction);
}
public static void main(String[] args) {
LoginUI ui = new LoginUI();
ui.showUI();
}
}