关于Java的界面设置与监听器的总结
1、API文件调用
// An highlighted block
import javax.swing.JFrame;//窗体 自带最小化、最大化、关闭、标题栏,界面核心部分
import java.awt.Dimension; //选定界面尺寸
import java.awt.FlowLayout;//流式布局,即从左至右,从上至下
import javax.swing.ImageIcon;//插入图片时需要用到
import javax.swing.JButton;//界面按钮,后续与监听器组合进入新界面
import javax.swing.JCheckBox;//复选框
import javax.swing.JLabel;//在界面显示,无法执行操作
2、界面基础设置
以QQ登录界面为例
继续导入
import javax.swing.JPasswordField;//文本输入框
import javax.swing.JTextField; //密码输入框
2.1、创建窗体对象
public class LoginUI {
public void showUI() {
JFrame jf = new JFrame();//创建一个窗体对象
}
}
2.2、设置属性
用对象调用函数
jf.setTitle("登录界面");
jf.setSize(290,480);// 尺寸 wide height
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置进程关闭
jf.setLocationRelativeTo(null);//居中显示
jf.setResizable(false);//设置不可改变大小
FlowLayout fl = new FlowLayout();
jf.setLayout(fl);//设置流式布局
2.3、进行组件布置
组件(Component)是对数据和方法的简单封装
组件有按钮、输入框、菜单、复选框等 是窗体关键部分,需放在窗体布置之后,可视化之前
ImageIcon img = new ImageIcon("此处放入图片的链接");//图片
JLabel imgjla = new JLabel(img);//创建对象,调用img //标签,图片需放在标签上
JLabel namejla = new JLabel("账号:");
JLabel pwdjla = new JLabel(" 密码:");
JTextField nameField = new JTextField();
JPasswordField pwdField = new JPasswordField();
JCheckBox jckb1 = new JCheckBox("记住密码");//复选框
JCheckBox jckb2 = new JCheckBox("自动登录");
JButton btn = new JButton("登录"); //按钮
**此时仅仅是创建了新的对象,并没有将各组件加入到窗体上**
给组件添加属性
```java
Dimension dimension = new Dimension(250,30); //设置一个尺寸对象,方便下面调用
nameField.setPreferredSize(dimension);
pwdField.setPreferredSize(dimension);
3 将组件添加至窗体
将组件对象添加到对应的容器(窗体对象)对象上
使用add函数
jf.add(imgjla);
jf.add(namejla);
jf.add(nameField);
jf.add(pwdjla);
jf.add(pwdField);
jf.add(jckb1);
jf.add(jckb2);
jf.add(btn);
jf.setVisible(true);//可视化 ,界面显示的关键一环
此时界面已经布置完毕,可以运行
4、监听器的添加方式
基本要素
(1)事件:用户对组件的一个操作,称之为一个事件
(2)事件源:发生事件的组件就是事件源
(3)事件监听器(处理器):监听并负责处理事件的方法
监听器模式:事件源注册监听器之后,当事件源触发事件,监听器就可以回调事件对象的方法;更形象地说,监听者模式是基于:注册-回调的事件/消息通知处理模式,就是被监控者将消息通知给所有监控者。
下面以QQ用户登录为例
需用到的API文档
import java.awt.event.ActionEvent;//事件
import java.awt.event.ActionListener;
import javax.swing.JTextField;
监听器需要额外创建一个类来使用
public class LoginUIListener implements ActionListener { //implement是关键字
JTextField nameField;
//当被监听的按钮 被点击时 自动响应
public void actionPerformed(ActionEvent e) {
String btnstr = e.getActionCommand(); // e 得到按钮上的字符串
if (btnstr.equals("登录")) { // 字符串比对函数
if ("123456".equals(nameField.getText())&&"789".equals(pwdField.getText()) ) }
//用户在输入框中输入的账号,getText获得文本
}
}
新界面的显示需要在监听器的界面下实例化并被调用
在窗体可视化后加入监听器代码进行数据传输
LoginUIListener lul = new LoginUIListener();//实例化实现了监听器接口的类
btn.addActionListener(lul);//按钮对象添加动作监听器;此处属于方法
lul.nameField = nameField; //将数据传输到监听器类中判断
lul.pwdField = pwdField;
点击登录即可进入新界面
结果