Java学习 之 登录界面与接口 动作监听器
登录界面
开发包:
awt : 早期的java 界面开发包 ,保留一些元素等日常使用的类;
swing : 后期稍微优化了的一些组件包;
界面内容:
顶级容器: 像 JFrame Frame Window 这些;
(一个界面程序最外部底层的窗体)
容器: 面板 JPanel
(需要添加到顶级容器上,其余的组件都需要添加到一个容器上);
组件: 按钮 输入框 等一些自带功能的组件 ;
元素: 颜色 布局器 尺寸;
界面开发所需 API 类
import java.awt.Color; //颜色
import java.awt.Dimension; //尺寸
import java.awt.FlowLayout; //流式布局器
import javax.swing.JFrame; //窗体
import javax.swing.ImageIcon; //图片
import javax.swing.JButton; //按钮
import javax.swing.JCheckBox; //复选框
import javax.swing.JLabel; //标签 (图片/文字/无)
import javax.swing.JPasswordField; //密码输入框
import javax.swing.JTextField; //文本输入框
使用方法
第一步: 实例化这个组件的对象
第二部: 给这个对象设置属性
第三步: 将这个对象添加其所属位置
初始化窗体方法
//实例化窗体对象
public class LoginU {
//主函数调用
public static void main(String args[]){
LoginU lgu=new LoginU();
lgu.initUI();
}
//初始化窗体的方法
public void initUI(){
JFrame lgjf=new JFrame();
lgjf.setTitle("QQ登录");
lgjf.setSize(400, 400);
//设置进程关闭
lgjf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置居中显示
lgjf.setLocationRelativeTo(null);
//设置窗体不可改变大小
lgjf.setResizable(false);
//流式布局器
FlowLayout fl=new FlowLayout();
lgjf.setLayout(fl);
//可视,默认false,写在全部组件创建完成后
lgjf.setVisible(true);
布局器 : 一般设置给窗体或者面板,来控制组件摆放的位置;
流式布局器: FlowLayout
(当一行组件摆放不下时切换到第二行,居中,从上至下 );
给容器设置布局: 容器对象.setLayout(布局器对象参数);
创建组件
//创建组件
//图片
ImageIcon image=new ImageIcon("D:\\Java\\JavaCode\\JavaStu\\src\\LoginU\\QQ.PNG");
JLabel imJla=new JLabel(image);
//标签
JLabel nameJla=new JLabel("账号: ");
JLabel pwdJla=new JLabel("密码: ");
//文本输入框
JTextField namein=new JTextField();
//密码输入框
JPasswordField pwdin=new JPasswordField();
//按钮
JButton lgbtn=new JButton("登录");
//选择框
JCheckBox lgJcb=new JCheckBox("自动登录");
JCheckBox pwdJcb=new JCheckBox("记住密码");
JLabel fpwdJla=new JLabel("找回密码");
JButton zcbtn=new JButton("注册账号");
ImageIcon: 图片类 并不是一个组件,需要实例化后把它依托在JLabel上;
设置组件属性
//设置组件属性
//输入框尺寸设置
Dimension indim=new Dimension(330,30);
namein.setPreferredSize(indim);
pwdin.setPreferredSize(indim);
//标签背景颜色
lgbtn.setBackground(new Color(100,180,255));
//标签尺寸设置
Dimension lgDim=new Dimension(300,30);
lgbtn.setPreferredSize(lgDim);
Dimension: 尺寸
实例化:Dimension dim = new Dimension(800,600);
设置组件尺寸: namein.setPreferredSize(indim);
在界面上添加组件
//添加组件
lgjf.add(imJla);
lgjf.add(nameJla);
lgjf.add(namein);
lgjf.add(pwdJla);
lgjf.add(pwdin);
lgjf.add(lgJcb);
lgjf.add(pwdJcb);
lgjf.add(fpwdJla);
lgjf.add(lgbtn);
lgjf.add(zcbtn);
运行效果
监听器
事件与接口
接口: 声明关键字 interface
- 接口不能声明变量和带有方法体的方法
- 接口不能实例化对象
- 接口可以多实现
(一个类可以实现多个接口,但只能继承一个类)
接口使用方法
关键字:implements
格式: 实现接口的类 implements 接口名
一个类去实现这个接口需要重写这个接口中的所有抽象方法
动作监听器(ActionListener)
可以监听 按钮 菜单 之类的组件
使用方法
- 使用一个类去实现这个监听器
- 实例化这个监听类的对象
- 组件直接添加监听器
使用:组件名.add监听器类型(实现了监听器接口的类的对象); - 将需要的界面上的对象传入监听器
- 在监听器重载的方法中实现监听到相应操作之后需要执行的代码
用接口实现监听器类
public class LoginUIListener implements ActionListener{
//声明接收的输入框对象
JTextField namein;
JPasswordField pwdin;
JFrame lgjf;
JFrame lgjfnew;
//按钮被点击时自动调用
public void actionPerformed(ActionEvent e){
//获取按键内容
String btnstr= e.getActionCommand();
//如果按下登录键
if(btnstr.equals("登录")){
//获得输入框中的内容
String name=namein.getText();
String pwd=pwdin.getText();
//登陆成功
if(name.equals("12345")&&pwd.equals("12345")){
System.out.println("登陆成功");
//关掉登录页面
lgjf.setVisible(false);
}
}
}
取到输入框中的字符串:输入框对象.getText();
登录界面添加动作监听器
//实例化监听器对象
LoginUIListener ll=new LoginUIListener();
//给按钮加上监听器
lgbtn.addActionListener(ll);//登录按钮添加监听器
zcbtn.addActionListener(ll);//注册按钮添加监听器
//将输入框对象传入监听器类中
ll.lgjf=lgjf;//界面窗体
ll.namein=namein;//文本输入框
ll.pwdin=pwdin;//密码输入框
Over!