说到事件机制,就不能不提接口,然何为接口呢?接口实际上也是一种类,只是与一般的类有所不同。接口的关键字是interface,格式为:public interface 接口名 extends 接口,…{}
接口中有常量和抽象方法,常量的命名规则是每一个字母都要大写,可是我们常常忽略了这个规则,因为java没有严格要求要大写,小写时也不会报错,但是建议最好还是大写。格式有三种:
1).public static final 数据类型 常量名 = 值;
2).static final 数据类型 常量名 = 值;
3).数据类型 常量名 = 值;
抽象方法,没有具体的实现体,连空的{}也是不可以带的。它的定义格式也是有三种的:
1).public abstract 返回值数据类型 方法名(数据类型 形参,...);
2).abstract 返回值数据类型 方法名(数据类型 形参,...);
3).返回值数据类型 方法名(数据类型 形参,...);
接口的作用是可以让类实现多继承,它的实现关键字是implements,格式为:public class 类名 extends 类或者抽象类 implements 接口,…{}
类在实现接口时必须要实现接口中所有的抽象方法。
抽象类又与接口和一般的类不同,类可以实例化对象而抽象类不行,但是抽象类可以定义类中所有的属性和方法,还可以定义接口中的常量和抽象方法,它是介于接口和类之间的一种特殊类。它的定义格式:
public abstract class 抽象类名 extends 类或者抽象类 implements 接口,…{}
现实生活中有许许多多的事件,在java中则有事件机制来表示整个事件。事件机制由三个方面组成:事件源、事件监听器方法、时间处理类。
事件源:很多人在事件源的理解上有所误解,容易被表象所迷惑,实际上,时间源只能是图形界面组件对象。它是根据你的动作来确定,动作发生在哪一个组件上,那么该组件就是事件源对象。例如:对方来电时,手机界面上有两个按钮,接起或者挂断。当你选择接起时,则接起按钮为事件源;当你选择挂断时,则挂断按钮为事件源。
比较常用的事件监听器方法有:addActionListener(ActionListener l); 动作监听器方法;addMouseListener(MouseListener l);鼠标监听器方法;addMouseMotionListener(MouseMotionListener l);鼠标移动监听器方法;
addKeyListener(KeyListener l); 键盘监听器方法。
事件处理类:前面所提到的常见监听器方法类所对应的事件接口:ActionListener、MouseListener、MouseMotionListener、KeyListener。
相关练习:QQ登陆界面的简单实现:
以下是QQ登陆界面
/** * 定义一个QQ类,用来实现一个简单的QQ登陆界面 */ import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class QQ { //程序的入口主函数 public static void main(String[] args) { QQ qq=new QQ();//实例化一个QQ类对象 qq.showFrame();//用所创建的QQ类对象调用初始化界面showFrame方法 } //初始化界面方法 public void showFrame(){ //实例化一个JFrame类对象 JFrame frame=new JFrame(); //设置窗体属性值 frame.setTitle("QQ");//设置标题 frame.setSize(400,320);//设置窗体大小 frame.setLocationRelativeTo(null);//设置窗体显示在正中央 frame.setResizable(false);// 设置禁止改变窗体大小 frame.setLayout(null);//设置绝对布局 //实例化一个ImageIcon对象 ImageIcon icon = new ImageIcon("images/007.gif"); //实例化一个标签对象,并让其显示为背景图片 JLabel imageLabel = new JLabel(icon); //设置标签大小 imageLabel.setBounds(0, 0, icon.getIconWidth(),icon.getIconHeight()); //将标签添加到窗体的JLayeredPane面板上 frame.getLayeredPane().add(imageLabel, new Integer(Integer.MIN_VALUE)); //设置ContentPanel面板透明 JPanel jp = (JPanel)frame.getContentPane(); jp.setOpaque(false); //设置一个文本输入框对象,并设置其大小,将其添加到窗体对象上 JTextField cmb=new JTextField(); cmb.setBounds(125,150,180,25); frame.add(cmb); //设置一个标签对象,并设置其大小,将其添加到窗体对象上 JLabel jb1=new JLabel("注册账号"); jb1.setBounds(310,150,80,25); frame.add(jb1); //设置一个文本输入框对象,并设置其大小,将其添加到窗体对象上 JTextField pwf=new JTextField(); frame.add(pwf); pwf.setBounds(125,180,180,25); //设置一个标签对象,并设置其大小,将其添加到窗体对象上 JLabel jb2=new JLabel("忘记密码"); jb2.setBounds(310,180,80,25); frame.add(jb2); //实例化一个复选框对象,设置其大小并将其添加到窗体对象上 JCheckBox ckb1=new JCheckBox("记住密码"); ckb1.setBounds(120,205,80,30); frame.add(ckb1); //实例化一个复选框对象,设置其大小并将其添加到窗体对象上 JCheckBox ckb2=new JCheckBox("自动登陆"); ckb2.setBounds(200,205,80,30); frame.add(ckb2); //设置一个登陆按钮 JButton btn=new JButton("登陆"); frame.add(btn); btn.setBounds(125,245,150,30); //btn.setJButton(); ImageIcon image = new ImageIcon("images/我的头像.GIF"); //实例化一个JLabel对象,并让其显示为图片 JLabel loginShoto = new JLabel(image); loginShoto.setBounds(25,147,image.getIconWidth(),image.getIconHeight()); frame.add(loginShoto); //设置窗体关闭时结束程序 frame.setDefaultCloseOperation(3); //实例化事件处理类的对象 LoginListener al = new LoginListener(frame,cmb,pwf); //找到事件源jbuLogin //给事件源添加动作监听器方法 给监听器方法添加事件处理类对象。 btn.addActionListener(al); //设置窗体可见 frame.setVisible(true); } }
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JTextField; /** * 3.定义一个事件处理类LoginListener,该类要实现ActionListener接口 */ public class QQListener implements ActionListener { //扩大参数的访问范围 private JTextField cmb, pwf; private JFrame frame; /** * 构造方法,接受账号和密码输入框对象 */ public QQListener(JFrame frame,JTextField cmb,JTextField pwf){ this.cmb = cmb; this.pwf = pwf; this.frame = frame; } /** * 4.实现事件处理方法。 */ public void actionPerformed(ActionEvent e) { //System.out.println("你点击了"+e.getActionCommand()+"按钮!"); //获取输入的账号和密码 String name = cmb.getText(); String pwd = pwf.getText(); //判断输入账号和密码是否是admin if(name.equals("admin") && pwd.equals("admin")){ // 实例化一个JFrame类的对象 JFrame jf = new JFrame(); // 设置窗体的属性值 jf.setTitle("登陆成功界面");// 设置标题 jf.setSize(300, 600);// 设置大小 jf.setLocationRelativeTo(null);// 设置窗体显示在屏幕中央 //jf.setResizable(false);// 设置禁止改变窗体大小 jf.setDefaultCloseOperation(3);// 设置窗体关闭时退出程序 jf.setVisible(true);//设置窗体可见 frame.dispose();//登录窗口关闭 }else{ //弹出一个消息提示框 JOptionPane.showMessageDialog(frame, "你输入账号和密码错误,请重新输入!"); } } }
输入账号密码登陆:
登陆成功界面:
输入账号和密码:
相关推荐
A4打印模板-画图设计设计师产品草稿图纸-网格纸A4打印模板高清待办练字模板PDF下载
ISA-95 流程圣经,描述了PLM企业资源计划、MES制造执行系统、ERP企业资源计划系统、SCM供应链管理系统、客户关系管理CRM之间的关系
颁奖领奖音乐在各种表彰、嘉奖或庆祝场合中扮演着至关重要的角色,其作用主要体现在以下几个方面: 1.营造氛围: 2.情绪引导: 3.节奏控制: 4.品牌塑造: 5.文化表达: 6.致敬与激励: 综上所述,颁奖领奖音乐在颁奖典礼中不仅作为背景音效存在,更是情感传递、氛围营造、流程把控、品牌塑造、文化展现和精神激励的重要载体,对于提升典礼的整体效果和观众体验有着不可忽视的影响。
这个项目是用于个人参加浙江大学移动创新竞赛而使用。
手绘稿模板iphone_x_wireframe_template_-_a4A4打印模板高清待办练字模板PDF下载
使用最简单的输入流和输出流实现 文件复制粘贴功能。这是第二种方式,与第一种方式的不同在于我们使用byte[]数组盛放从myFile读取到字节。比第一种方式,速度会快一些。
Web APIs-Dom获取&属性操作(理论+实战篇)-获取随机图片案例资料
免安装,无缝从Linux系统上传下载文件
apk导入手机文件夹下载
Screenshot_20240422_201618_com.ss.android.ugc.aweme.jpg
设计模式_结构型_外观模式
电气测量技术课程设计-基于STM32的电机状态检测系统 实现的功能有实时检测电机的转速、温度和姿态角度,可以通过串口或Labviwe读取 选用的模块包括霍尔传感器、DS18B20温度传感器和MPU6050陀螺仪传感器
大家找文章比较费劲的话,可以直接在这个资源里找我会持续更新的,大家冲就完事了,为了学习我的人进步的更快的方式,我可以贡献一下自己的代码,让大家观看。 心理上:希望自己分享的东西得到关注度,心里上有成就感 研究领域上:希望分享的东西可以促进同行之间的交流,加深自己的理解以及讨论中发现问题 综合来看:对自己做的东西有自信,对自己写的东西有自信 我始终坚信,推动科学与技术发展的动力之一就是分享。分享有益,何谓劳也?得自己完成开发了项目中的功能很有成就感(自我感觉牛掰),于是分享在论坛可以和大牛们一起讨论,甚至提出建议进行修改完善,就这一点来说,分享代码对项目的推进是有好处的因为可以有成就感啊,分享出去可以炫耀一下,也可以与其他人交流交流 我们不妨开放一下我们的胸怀,不要怕别人学你的,也不要怕学不到别人的,做学问始终要恭谨甚至谦卑,时间长了,总归会发现,你的进步比别人的进步更快更高更强。 这是勉励您也是勉励我自己的话。从做项目角度来说,我是很乐意share的,也在自己的博客园、csdn、GitHub中share过自己的源码和笔记。首先需要说明一点:国内外均有很多很多人喜欢分享出自己的代码、总结
计算机技术是指评价计算机系统的各种知识和技能的总称。它涵盖了计算机硬件、软件、网络和信息安全等方面。计算机技术的发展使我们能够进行高效的数据处理、信息存储和传输。现代计算机技术包括操作系统、数据库管理、编程语言、算法设计等。同时,人工智能、云计算和大数据等新兴技术也在不断推动计算机技术的进步。计算机技术的应用广泛,涵盖了各个领域,如商业、医疗、教育和娱乐等。随着计算机技术的不断革新,我们可以更加高效地实现预期自动化、标准化
建筑网页插画界面XD源文件AdobeXD源码下载设计素材UI设计
网络安全相关的RSS订阅列表.zip
智创大赛主程序,Arduino开发
tomcat安装及配置教程 Tomcat安装及配置教程与功能介绍
java Netty源码解析-服务启动过程
百度Apollo学习:Routing模块结构和源码