接口与事件机制的总结
一、接口
1.定义:
1)定义接口的关键字:interface
2)定义接口的格式:
public interface 接口 extends 接口名,…{
//常量
public static final 数据类型 常量名=值;//N.B:常量名的每一个字母都要大写
//抽象方法
public 返回值数据类型 方法名(数据类型 参数名,…);
}
注意:a.接口可以继承多个接口。
b.接口中只有一种访问修饰符public。
c.接口中默认就是常量,所以public static final 可以不写。
d.接口也是一种类。
e.接口不能用来实例化对象。
2.实现:
1)实现接口的关键字:implements
2)实现接口的格式:
public class 类名extends 类或者抽象类 implements 接口,…{
}
注意:a.类实现接口的时候,必须要实现接口中所有的抽象方法。
b.类实现接口后,实际上两者之间就存在了继承关系(继承的特性都被保留下来了)。
* c.类可以先继承类,然后再去实现接口。类就拥有了多个父接口。
二、抽象类
1.概念:抽象类就是介于类和接口之间的一种特殊类。
2.格式:
public abstract class 抽象类名 extends 抽象类或者类 implements 接口,…{
//定义类中所有的属性和方法(普通方法和构造方法)
//定义接口中的常量和抽象方法
//常量
访问修饰符 static final 数据类型 常量名=值;//常量名的每一个字母要大写哦~
//抽象方法
访问修饰符 abstract 返回值数据类型 方法名(数据类型 参数名,…);
}
三、事件机制
1.事件源:
a.只有图形界面类的组件才可以成为事件源对象。
b.你的动作发生在哪一个组件上,那么该组件就是事件源对象。
2.事件监听器方法:
a.给事件添加一个监听器的方法,让事件源捕获到对应的事件操作(动作),才能去调用事件处理类对象。
b.事件源.addActionListener(事件处理类对象);
3.事件处理类:
a.它是最终处理者。
b.格式:
public class 类名 implements ActionListener{
//实现抽象方法
}
/***********************************练习**********************************/
1.实现QQ界面的登录功能:
在界面基础上的主要代码:
1) 主函数里的代码:
A.//声明一个全局的变量名
private QQListener ll = null ;
B.在创建中间面板的方法中加入:
//实例化一个QQListener事件处理类的对象ll,同时将账号和密码输入框对象通过构造方法传入到QQListener类中
ll = new QQListener(jco,jpa,jf1);
C.给事件源(按钮)添加监听器
//给事件源添加一个监听器方法,同时绑定事件处理器的对象ll
jbu.addActionListener(ll);
2)事件监听器方法:
package cn.zhm.study0718;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
/**
* 登录事件的处理类,该类要实现ActionListener接口
* @author becky
*
*/
public class QQListener implements ActionListener {
private JComboBox jco;//用来获取账号的对象
private JPasswordField jpa;//用来获取密码的对象
private JFrame jf1;//用来获取登录窗口的对象
/*
* 构造方法
* jco用来获取账号的对象
* jpa用来获取密码的对象
* jf1用来获取登录窗口的对象
*/
public QQListener(JComboBox jco,JPasswordField jpa,JFrame jf1){
this.jco=jco;
this.jpa=jpa;
this.jf1 = jf1;
}
/**
* 事件的处理方法
*/
public void actionPerformed(ActionEvent e){
System.out.println("你点击了"+e.getActionCommand()+"按钮");
//获取输入的账号,同时将账号转换为字符串
String name=(String)jco.getSelectedItem();
//获取输入的密码,同时将字符数组转换为字符串
String pwd=new String(jpa.getPassword());
//判断输入的账号和密码是否正确
if(name.equals("1136207581") && pwd.equals("123456")){
//实例化一个简单画板的界面
JFrame jf=new JFrame("简单画板");
jf.setSize(600,500);
jf.setDefaultCloseOperation(2);
jf.setLocationRelativeTo(null);
jf.setVisible(true);
jf1.dispose();
}
else//输入的账号和密码不正确
{
//弹出一个消息提示框对象
JOptionPane.showMessageDialog(null,"你输入的密码和账号不正确!请重新输入!");
}
}
}
2. 实现计算器的+、-、*、/运算功能
1)思路:当定义好的参数检测到“=”时开始进行运算;未检测到“=”时,将参与运算的数值和运算符分别赋给不同的的参数。每次运算结束后,将参数清“0”。
2)主要代码
package cn.zhm.study0718;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JTextField;
/**
* 输入事件的处理类,该类要实现ActionListener接口
* @author Administrator
*
*/
public class CounterListener implements ActionListener{
private JTextField jte;//用来获取文本输入值的对象
private String a;//被第一个数值赋值的对象
private String b;//被第二个数值赋值的对象
private String c;//用来判断数值和运算符的对象
private int flag;//用来控制输入文本框的对象
//使用构造方法传递参数
public CounterListener(JTextField jte,String a,String b,String c,int flag){
this.jte=jte;
this.a=a;
this.b=b;
this.c=c;
this.flag=flag;
}
/**
* 用来获取按钮的对象
*/
@Override
public void actionPerformed(ActionEvent e) {
//如果检测到“=”号,则开始运算
if(e.getActionCommand().equals("=")){
String d=null;
double i;
//如果检测到加号,进行运算,输出结果
if(c.equals("+")){
i=(Double.parseDouble(a)+Double.parseDouble(b));
d=new String(Double.parseDouble(a)+"+"+Double.parseDouble(b)+"="+i);
}
//如果检测到减号,进行运算,输出结果
else if(c.equals("-")){
i=(Double.parseDouble(a)-Double.parseDouble(b));
d=new String(Double.parseDouble(a)+"-"+Double.parseDouble(b)+"="+i);
}
//如果检测到乘号,进行运算,输出结果
else if(c.equals("×")) {
i=(Double.parseDouble(a)*Double.parseDouble(b));
d=new String(Double.parseDouble(a)+"×"+Double.parseDouble(b)+"="+i);
}
//如果检测到除号,进行运算,输出结果
else if(c.equals("÷")){
i=(Double.parseDouble(a)/Double.parseDouble(b));
d=new String(Double.parseDouble(a)+"÷"+Double.parseDouble(b)+"="+i);
}
//第一次运算完毕后,把第一次运算的数值全部清零,为第二次运算做准备
a=null;
b=null;
flag=0;
//将运算的式子和结果展现在文本输入框中
jte.setText(d);
}
//如果检测到加、减、乘、除运算符
else if(e.getActionCommand().equals("+")||
e.getActionCommand().equals("-")||
e.getActionCommand().equals("×")||
e.getActionCommand().equals("÷")){
//令flag的值为1
flag=1;
//将按钮图标转换为字符串
c=e.getActionCommand();
//将字符串c展现在文本输入框中
jte.setText(c);
}
else{
//如果flag为0,将第一个数值展现在文本输入框中
if(flag==0){
//如果a为空,那么把对于它来说第一次点击的按钮的图标赋值给它
if(a==null){
a=e.getActionCommand();
jte.setText(a);
}
//如果a不为空,那么把下一次点击的按钮的图标连接到它之前带有的图标后面
else{
a=a+e.getActionCommand();
jte.setText(a);
}
}
else if(flag==1){
//如果flag为1,将第二个数值展现在文本输入框中
if(b==null){
b=e.getActionCommand();
jte.setText(b);
}
else{
b=b+e.getActionCommand();
jte.setText(b);
}
}
}
}
}
3.遇到的问题:
a.我只想说,传参实在是我的拦路虎。
b.初次接触java,很多类不是不知道就是用不习惯。
c.if判断完后,注意接下来的判断是if还是else if还是else,不然可能会得不到理想中的结果。
d.字符串的相加,如 :string a;
a=a+e.getActionCommand();
实际上是将两个字符连接起来。
e. e.getActionCommand();得到的是事件源上的命令行。
f.jte.setText(b);这是将b所带的值显示在定义好的文本输入框内。
分享到:
相关推荐
本文将深入探讨“Android事件分发机制总结Demo”,结合代码实例MyTouchEventDemo,帮助开发者清晰理解这一核心概念。 事件分发机制主要涉及三个关键组件:View、ViewGroup(布局)和MotionEvent。当用户触摸屏幕时...
Java事件处理机制是Java编程中一个重要的组成部分,它主要用于实现用户界面(UI)与应用程序逻辑之间的交互。在Java中,事件处理主要涉及到事件源、事件和事件监听器。本示例"java事件处理机制Demo"将深入探讨Java的...
### 微机接口期末考试个人总结 #### 一、复习范围概述 本次期末考试主要针对《微机接口技术》这门课程进行全面考核。复习范围主要包括以下几个方面: 1. **微处理器与微控制器基础**:这部分内容是整个课程的基础...
总结来说,Java事件处理机制通过事件对象、事件源和事件监听器的协作,实现了组件间的通信和事件响应。开发者可以通过自定义事件和监听器来扩展这一机制,以适应各种复杂的交互需求。理解和掌握这一机制,对于编写...
Java事件处理机制是Java GUI编程中的重要组成部分,它允许用户与图形界面进行交互。在Java中,事件处理涉及事件源(Event Source)、事件(Event)和事件监听器(Event Listener)。当用户执行某个操作,如点击按钮...
总结来说,接口定义了对象的行为标准,委托提供了方法调用的灵活性,而事件则是对象间通信的重要方式。通过结合这些特性,开发者可以构建出高效、可扩展的异步事件处理机制,如事件异步轮询,使得应用程序能够及时...
总结来说,Java的事件处理机制使得开发者能够轻松地响应用户交互,创建出具有响应性的GUI应用。通过理解并熟练运用事件、事件源、事件处理器、监听器接口和监听器适配器,可以构建出丰富的用户交互体验。
总结,Linux内核的网络接口通知链机制是实现网络接口动态管理的关键,它使得网络驱动程序和其他组件能及时响应接口状态的变化,确保了网络服务的稳定性和效率。通过深入理解这一机制,开发者可以更好地编写和优化...
在C++编程中,接口(Interface)的概念通常与面向对象编程相关,它是定义类或对象行为的一种规范。虽然C++语言本身并没有直接提供接口的概念,但可以通过一些技巧来模拟接口的实现。这篇博客"《C++接口实现总结》...
4. **添加事件处理程序**:事件处理程序是响应事件的方法,与事件委托类型匹配: ```csharp private void HandleMyEvent(object sender, EventArgs e) { // 处理事件的代码 } ``` 5. **订阅事件**:将事件...
总结,Android事件处理机制是构建用户友好、响应迅速的应用程序的基础。理解和熟练掌握事件冒泡、监听器以及消息队列的使用,能帮助开发者更好地设计和实现应用程序的交互逻辑。在实际开发中,灵活运用这些机制,...
在事件注册与调度机制中,基类通常定义通用的事件处理接口,而子类则根据具体需求重写这些接口,实现特定的事件处理逻辑。 虚函数是C++中实现多态性的一种方式。当基类指针或引用指向子类对象时,调用虚函数会执行...
Flex事件机制是Adobe Flex应用...总结,Flex事件机制是构建交互性应用的基础,理解并熟练掌握它能够帮助开发者编写出更加高效、响应迅速的Flex应用程序。通过合理地组织和管理事件,可以提高代码的可维护性和用户体验。
#### 组件类事件与动作类事件 Java GUI编程中的事件大致可以分为两大类:组件类事件和动作类事件。 - **组件类事件**主要包括以下几种: - **ComponentEvent**: 当组件被创建或销毁时触发。 - **ContainerEvent*...
本文将对Android的一些常见控件及其对应的事件进行总结,帮助开发者更好地理解和应用这些控件。 首先,Button(按钮)是最常见的控件之一,用于执行特定的操作。按钮的单击事件可以通过实现OnClickListener接口来...
你需要分离出与事件处理相关的代码,去除与Redis其他部分的耦合,同时确保所有依赖的函数和结构体都被包含进来。这个过程可能涉及对源码的重构和修改。 5. **实例应用** 创建一个简单的实例,例如,你可以实现一个...
**接口与通讯实验报告概述** 本实验报告主要探讨了计算机系统中接口与通讯的基本概念和技术,通过一系列具体的实验,深入理解了接口的功能以及不同设备之间的通信方式。实验内容包括数字式时钟(电子钟)的设计、DA...
"IPMI接口总结、IPMB总线概述" IPMI(Intelligent Platform Management Interface)是一种智能平台管理接口,用于实现服务器平台管理,包括服务器的实时监控、故障诊断、远程控制等功能。IPMI协议基于IPMB...
为了简化代码结构和提高可维护性,作者建议将事件源与事件类和监听器类解耦。这样,事件源只需关注触发事件,而事件的处理逻辑则由监听器负责。此外,引入一个事件来源标识的枚举类型,用于明确事件产生的上下文,...