Java——Swing界面,接口和事件
来源:互联网 发布:铃声截取软件 编辑:程序博客网 时间:2024/04/29 16:00
接口
为什么要使用接口?
我们都知道,在Java中,可以使用类的继承来简洁的完成拥有定义相同属性、相似方法类的操作。但是类的继承面临一个问题,一个子类无法继承自多个父类,所以引入接口概念。一个类可以实现多个接口,接口弥补了类的不能多继承缺点,继承和接口的双重设计既保持了类的数据安全也变相实现了多继承。
接口的定义
- 接口其实就是一种特殊的类,定义接口的关键字:interface
- 格式:
public interface 接口 extends 接口,... { //定义常量 注意:Java提倡的常量名全部大写 public static final 数据类型 常量名 = 值; //定义抽象方法public abstract 返回值类型 方法名(数据类型 参数名,...)}
接口中只能定义常量和抽象方法!
- 注意:
- 1.接口只有一个访问修饰符public。
- 2.接口默认会提供public、static、final、abstract关键字。(即可以省略不写)
- 3.接口是不允许实例化对象的。(只能定义常量和抽象方法,没有构造方法)
接口的实现
- 实现接口的关键字:implements
- 格式:
public class 类名 extends 类名 implements 接口,... {//类必须要实现接口中所有的抽象方法(包括接口的父接口中的抽象方法)}
显而易见接口是一种特殊的类,我们定义类实现接口实际就是类继承了接口,所以接口是用来丰富类的继承关系。
事件机制
事件源对象
- 有哪些内容可以成为事件源对象?
所有的容器组件和元素组件都可以成为事件源对象。 - 如何确定谁是事件源对象?
你的动作发生在哪一个组件上,那么该组件就是事件源对象。
事件监听方法
- 事件源对象
.addActionListener(ActionListener l)
; - 动作事件监听方法,这个方法会捕获按钮上的鼠标点击动作和输入框中的回车键动作;如果有这样的动作方法,此方法会捕获动作,交给
ActionListener
参数对象进行处理,对象会调用对应的方法,执行方法中的代码。
事件接口
ActionListener
动作事件接口 actionPerformed(ActionEvent e)
动作事件的处理方法
接口是不能实例化对象,所必须要定义类实现这个接口,实现(重写)接口中的抽象方法。
Swing界面
关于图形界面
首先,Java中存在大量的图形界面源代码根据它们所储存的包名称不同,大体可以分为:
AWT组件
- 这些类是位于java.awt包下
- AWT组件是依赖于操作系统的绘图机制实现的,这样不同平台上
就需要不同的一套代码实现(Java语言实现的)。AWT组件称之为重量级组件。
SWING组件
- 这些类是位于javax.swing包下。
- SWING组件是基于AWT的基础上,采用纯Java代码重新构建一套新的轻量级组件。
- SWING组件中的顶级容器还是属于重量级组件,因为其他的组件都要依赖于这个顶级容器来实现(绘制)。
例如JFrame、JWindow、JApplet组件等
组件分类
组件根据作用不同可以分为:
容器组件类
- 能添加容器组件或者元素组件的就是容器组件类
元素组件类
- 一般只会用来显示文字图片接收用户的输入
上述的容器组件和元素组件类都是SWING组件类,所以你在使用的时候要记得加上包名:javax.swing.JFrame。
如果要使用AWT的组件,那么类名要必SWING组件的类名少一个字母J,例如:java.awt.Frame。
AWT组件中不存在密码输入框元素组件类。
引入组件类时可以将包名属于在程序的最上端,也可以光标选择组件类后,按住Ctrl+Shift+O自动引入包名
辅助类
- 帮助组件去完成某一个功能的类。常用的有:
流式布局是java.awt包下的类,使用的时候要加包名:java.awt.FlowLayout
ImageIcon是javax.swing包下的类,使用的时候要加上包名:javax.swing.ImageIcon
例子
实现一个登录界面,使用上述知识。
登录按钮后弹出一个名叫画图的新窗口。
具体步骤:
界面
- 1.定义Login类,在类中定义主函数和初始化界面的方法。
- 2.在主函数中,实例化Login类的对象,然后调用初始化界面的方法。
- 3.在初始化界面的方法中,实例化顶级容器JFrame窗体类的对象。
- 4.设置窗体容器的属性值:标题、大小、显示位置、关闭操作、布局、禁止调整大小,可见。
- 5..实例化组件类的对象,然后将组件对象添加到窗体上,这一步必须要写在窗体可见之前
事件接口
- 1.新建一个LoginListener事件处理类,该类通过implement关键字实现ActionListener动作事件接口,实现接口中全部的抽象方法。
- 2.新建一个叫做actionPerformed的事件处理方法,在其中实例化一个JFrame窗体容器组件类的对象,设置窗体的属性值。
- 3.新建一个界面类在界面类中,实例化LoginListener事件处理类的对象,取对象名ll。
- 4.给butLogin事件源对象,addActionListener()添加动作监听方法,指定事件处理类的对象名ll。 butLogin.addActionListener(ll);
具体代码:
LoginListener事件处理类
import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JFrame;/** * 1.定义LoginListener事件处理类,该类实现ActionListener动作事件接口,实现接口中的抽象方法。 */public class LoginListener implements ActionListener { private JFrame login;//声明窗体对象属性名 /** * 构造方法 * @param login参数是从Login类中传递过来的JFrame窗体对象 */ public LoginListener(JFrame login){ this.login = login;//将参数赋给属性 } /** * 1.实现(重写)接口中的抽象方法 * 此方法是事件的处理方法,并且是发生动作后自动调用 */ public void actionPerformed(ActionEvent e){ //2.在实现(重写)的抽象方法中,创建窗体对象,显示窗体 JFrame frame = new JFrame(); frame.setTitle("画图"); frame.setSize(700, 600); frame.setDefaultCloseOperation(3); frame.setLocationRelativeTo(null); frame.setVisible(true); //关闭登录界面 login.dispose(); }}
Login类
import javax.swing.JButton;/** * 1.定义Login类, * */public class Login { /** * 1.在类中定义主函数 */ public static void main(String[] args) { // 2.在主函数中,实例化Login类的对象,然后调用初始化界面的方法。 Login login = new Login(); login.initUI(); } /** * 1.自定义初始化界面的方法 */ public void initUI() { // 3.在初始化界面的方法中,实例化顶级容器JFrame窗体类的对象。 javax.swing.JFrame frame = new javax.swing.JFrame(); // 4.设置窗体容器的属性值:标题、大小、显示位置、关闭操作、布局、禁止调整大小,可见。 frame.setTitle("Login");// 设置窗体的标题 frame.setSize(300, 400);// 设置窗体的大小 // frame.setLocation(300, 100);//设置窗体显示的位置 frame.setLocationRelativeTo(null);// 设置窗体相对于另一个组件的位置,参数为null则表示窗体在屏幕的中央 frame.setDefaultCloseOperation(3);// 设置窗体的关闭操作,3表示关闭窗体退出程序。 frame.setResizable(false);// 设置禁止调整窗体的大小 /** * 实例化FlowLayout流式布局类的对象, */ java.awt.FlowLayout fl = new java.awt.FlowLayout(); frame.setLayout(fl);//将窗体的组件对齐方式设置为fl流式布局 // 实例化一个ImageIcon类的对象,用来加载磁盘上的图片文件到程序中 javax.swing.ImageIcon image = new javax.swing.ImageIcon("src/practice/login.png"); javax.swing.JLabel labImage = new javax.swing.JLabel(image); frame.add(labImage); javax.swing.JLabel labName = new javax.swing.JLabel("账号:"); frame.add(labName); javax.swing.JTextField textName = new javax.swing.JTextField(); textName.setPreferredSize(new java.awt.Dimension(240,30)); frame.add(textName); JButton butLogin= new JButton("登录"); frame.add(butLogin); frame.setVisible(true);// 设置窗体为可见 /** * 3.实例化LoginListener事件处理类的对象,对象名为ll;同时将登录界面的frame窗体对象传递到事件处理类中 */ LoginListener ll = new LoginListener(frame); /** * 4.给事件源butLogin按钮对象添加addActionListener()动作监听方法,指定事件处理类对象名ll */ butLogin.addActionListener(ll); }}
运行结果
- Java——Swing界面,接口和事件
- Swing+接口和事件机制
- java swing 窗口界面关闭事件响应
- java界面编程(4) ------ Swing事件模型
- java swing 窗口界面关闭事件响应
- Java Swing界面编程(21)---事件处理:窗体事件
- Java Swing事件处理——行为事件及监听处理 ActionListener和内部类
- 【java】java swing初识:事件触发&登陆界面
- JAVA swing界面JFrame窗体的全局按键事件监听
- Java Swing界面编程(27)---JRadioButton事件处理
- Java Swing界面编程(29)---JCheckBox事件处理
- JAVA-Swing图形化界面之事件监听1
- swing事件里面改变swing界面
- java swing基础和事件处理
- java swing 登陆界面
- Java Swing界面制作
- java swing 界面
- java swing界面布局
- java学习日志(2)变量类型、运算符、操作符
- Python快速入门
- 【华为校园优招】华为苏研2日面试之旅
- 基于百度接口的手机无广告浏览器设计
- grep命令的简单实用
- Java——Swing界面,接口和事件
- 爱生活
- 【H.264/AVC视频编解码技术详解】二. 主流视频编码标准的发展
- 内存泄漏分析工具---MAT使用总结(结合Android Studio)
- 解决AngularJS Http请求参数问题
- js手机端和pc端加载不同的样式
- Linux下缺失rz/sz命令
- 顺时针打印矩阵
- android 打开本地相册,并将选择的照片显示到当前界面