`
郑惠铭
  • 浏览: 7487 次
  • 性别: Icon_minigender_2
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

接口与事件机制的总结

阅读更多
接口与事件机制的总结
一、接口
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所带的值显示在定义好的文本输入框内。




分享到:
评论

相关推荐

    Java接口回调机制

     近在看androidFragment与Activity进行数据传递的部分,看到了接口回调的内容,来总结一下。  二、回调的含义和用途  1、什么是回调?  一般来说,模块之间都存在一定的调用关系,从调用方式上看,可以分为...

    字节大佬总结的Java面试资料

    字节大佬总结的Java面试资料 JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、 一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它与硬件没有直接 的交互。 ...

    精通Windows.API-函数、接口、编程实例.pdf

    17.2 安全机制程序示例 509 17.2.1 列举进程访问令牌内容和权限 509 17.2.2 修改进程的权限 514 17.2.3 列举安全对象的安全描述符 515 17.2.4 修改安全描述符 521 17.3 用户 522 17.3.1 ...

    精通Windows API--函数、接口、编程实例

    第2部分(第4章~第17章)按照程序设计的各个方面进行划分,包括文件系统、内存管理、进程与线程、用户界面、Shell程序开发、Windows GDI、Socket网络通信驱动程序开发、安全机制等内容;第3部分(第18章)作为全书的...

    精通WindowsAPI 函数 接口 编程实例

    17.2 安全机制程序示例 509 17.2.1 列举进程访问令牌内容和权限 509 17.2.2 修改进程的权限 514 17.2.3 列举安全对象的安全描述符 515 17.2.4 修改安全描述符 521 17.3 用户 522 17.3.1 创建用户 522 ...

    Java反射机制重点总结

    文章目录Java ReflectionJava反射机制提供的功能Java反射相关的主要APIjava.lang.Class类Class类的核心要点Class类的重要API实例实例化Class类对象(四种方法)创建类对象并获取类的完整结构获取Class对象后创建类的...

    精通WindowsAPI:函数、接口、编程实例 电子书

    第2部分(第4章~第17章)按照程序设计的各个方面进行划分,包括文件系统、内存管理、进程与线程、用户界面、Shell程序开发、WindowsGDI、Socket网络通信驱动程序开发、安全机制等内容;第3部分(第18章)作为全书的总结...

    用工厂模式、反射机制和缓存机制来设计数据访问层的接口

    近做项目,使用的是三层架构,在创建数据访问层接口的时候,使用的是反射和缓存机制,但是在运行的时候,总是提示不成功,测试发现反射机制出现问题,没有生成反射对应的类,加载失败,和别人写的代码进行对比,发现...

    ccna考试之rip总结

    RIP的防环机制:1、水平分割:A、水平分割:从接口收到的路由信息,不再从本接口发出。 B、毒性逆转的水平分割:从本接口收到的路由信息,转发 表示为16跳不可达。(防路由和IP包的环路) 2、最大...

    C#接口回调实现方式的总结.zip

    vs2015环境能跑,具有一定C#基础,需要深入理解语言逻辑机制的同志有一定参考价值,代码中有详细注释,具体见https://blog.csdn.net/coolzpf/article/details/117223856

    Vivado HLS 视频课程总结

    2 Vivado HLS的工作机制 5 3-4 HLS设计流程基本概念 9 5 任意精度数据类型 15 5.1 C语言支持的数据类型 15 5.2 sizeof()函数使用 16 5.3 设置Visual Studio支持任意精度数据类型 17 6 数组类型转换 17 6.1 变量的...

    Android工作实践总结:Aidl 远程调用(aidl实例总结)

    Android工作实践总结:...AIDL的IPC的机制和COM或CORBA类似, 是基于接口的,但它是轻量级的。它使用代理类在客户端和实现层间传递值. 如果要使用AIDL, 需要完成2件事情: 1. 引入AIDL的相关类.; 2. 调用aidl产生的class.

    MTK 短信的发送机制

    MTK 短信的发送机制,同事总结出来的,很实用的文档

    精通Windows.API-函数、接口、编程实例

    第2部分(第4章~第17章)按照程序设计的各个方面进行划分,包括文件系统、内存管理、进程与线程、用户界面、sheII程序开发、WindowsGDI、Socket网络通信驱动程序开发、安全机制等内容;第3部分(第18章)作为全书的总结...

    Android事件分发与消费

    之前写过一篇Android事件分发机制详解,感觉比较乱,这里再总结一下。网上已经有很多前辈分析过源码,大家可以参考,我这里尽量不做过多的源码分析,仅仅从流程上分析。事件分发和消费我们主要涉及到以下三个方法:...

    C#开发常见问题清单总结与入门常见问题.docx

    技巧9:使用IDisposable接口与using语句管理非托管资源 4. 并发与多线程编程 技巧10:线程同步与并发控制 技巧11:避免死锁的策略与设计模式 技巧12:线程安全编程与锁机制的正确使用 5. .NET框架高级特性 技巧13...

    Java高级程序设计实战教程第三章-Java反射机制.pptx

    对于任意一个对象,都能够调用它的任意一个方法,常见的应用如下 逆向代码 ,例如反编译 与注解相结合的框架 例如Retrofit 单纯的反射机制应用框架 例如EventBus 2.x 动态生成类框架 例如Gson Java高级程序设计实战...

    精通WindowsAPI:函数、接口、编程实例

    第2部分(第4章~第17章)按照程序设计的各个方面进行划分,包括文件系统、内存管理、进程与线程、用户界面、Shell程序开发、WindowsGDI、Socket网络通信驱动程序开发、安全机制等内容;第3部分(第18章)作为全书的总结...

    Windows API —函数、接口、编程实例

    第2部分(第4章~第17章)按照程序设计的各个方面进行划分,包括文件系统、内存管理、进程与线程、用户界面、Shell程序开发、Windows GDI、Socket网络通信驱动程序开发、安全机制等内容;第3部分(第18章)作为全书...

Global site tag (gtag.js) - Google Analytics