界面与监听器

mac2026-01-17  4

关于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;

点击登录即可进入新界面

结果

最新回复(0)