概念的介绍:

1.接口的定义
定义接口的关键字:interface
格式:
public interface 接口名 extends 接口,... {

//定义常量(常量名必须全部大写)
public static final 数据类型 常量名 = 值;

//定义抽象方法
public abstract 返回值类型 方法名(数据类型 参数名,...);
}
注意:
1.接口只有一个访问修饰符public。
2.接口会默认提供的关键字有:public、static、final、abstract
3.接口不能实例化对象。(是接口和类最大的区别)

2.类实现接口(类继承了接口)
类的继承是单继承,有了接口,就可以让类继承多个接口(丰富类的继承)。
实现接口的关键字:implements
实现接口的格式:
public class 类名 extends 类名 implements 接口名,... {

//必须要实现接口中所有的抽象方法(接口的父接口中的方法也必须要实现)

}
注意:子类必须要实现接口中所有的抽象方法。

2.事件机制(重点)
1.事件源对象
1.有哪些内容可以成为事件源对象?
所有的组件(容器组件和元素组件)都可以成为事件源对象。
2.在界面上你如何确定谁是事件源对象呢?
你在哪一个组件上发生动作,那么这个组件就是你的事件源对象。一个动作只有一个事件源。例如图形界面的验证登录,其他的密码输入等都是不是事件源,事件源是登录按钮。

2.事件监听方法
addActionListener(ActionListener l);
动作监听方法,该方法主要用来监听是否在类似按钮事件源对象上发生鼠标点击动作或者在类似输入框事件源对象上发生键盘的回车动作;如果监听到动作后,就会交给参数
ActionListener的事件处理类的对象进行处理,对象就会自动调用事件处理方法。

addMouseListener(MouseListener l);
鼠标监听方法,该方法主要用来监听事件源对象上是否有鼠标按下、释放、单击、进入和离开动作;如果监听到动作后,就会交给参数MouseListener的事件处理类的
对象进行处理,对象就会自动调用事件处理方法。

addMouseMotionListener(MouseMotionListener l);
鼠标移动监听方法,该方法主要用来监听事件源对象上是否有鼠标移动或者拖动动作;如果监听到动作后,就会交给参数MouseMotionListener的事件处理类的对
象进行处理,对象就会自动调用事件处理方法。

addKeyListener(KeyListener l);
键盘监听方法,该方法主要用来监听事件源对象上是否有键盘按键按下,释放和敲击动作;如果监听到动作后,就会交给参数KeyListener的事件处理类的对
象进行处理,对象就会自动调用事件处理方法。

3.事件接口(事件处理类)
  ActionListener         动作事件接口
  MouseListener         鼠标事件接口
  MouseMotionListener       鼠标移动事件接口
  KeyListener         键盘事件接口

接口是否能实例化对象呢?不可以
所以要定义事件处理类实现事件接口

4.事件执行流程

目标:点击登录界面上的登录按钮,就要显示一个新的界面。
1.事件源对象:登录按钮
2.事件监听方法:addActionListener(ActionListener l);
3.事件接口(事件处理类):ActionListener

开发步骤:
1.定义LoginListener事件处理类,该类实现ActionListener动作事件接口,实现接口中的抽象方法。
2.在事件处理方法(实现的抽象方法)中,显示一个新的界面
3.在界面类中,实例化LoginListener事件处理类的对象ll.
4.给事件源butLogin添加动作监听方法,指定事件处理类的对象ll.

登录成功后,登录界面就不需要再显示了。
事件处理类中没有登录界面窗体对象,所需你需要定义方法向登录界面类去借窗体对象。

5图形界面的实现

1.Java提供的图形界面类
1.AWT(基础)
AWT的组件是由操作系统的绘图机制绘制出来的。
AWT的组件是在java.awt包下的。

2.SWING(扩展)
SWING的组件是在javax.swing包下的。
SWING的组件是基于AWT组件的基础上重构的新的组件。

2.常用的组件类
1.容器组件类:能添加容器组件或者元素组件的就是容器组件类。
JFrame 窗体容器组件类 顶级容器

2.元素组件类:一般用来显示文字、图片、接受输入的组件就是元素组件类。
  JLabel        标签元素组件类 用来显示图片、问题的组件类
  JTextField       文本输入框组件类 用来接收输入的信息,直接显示出来
  JPasswordField    密码输入框组件类 用来接收输入的信息,但是是以某个符号代替显示
  JCheckBox       复选框元素组件类 有一个选择框,还能显示文字或图片
  JButton         按钮元素组件类 用来显示图片或者文字,还能点击

3.辅助类:帮助组件完成某一个功能的类。
  FlowLayout   流式布局类 类似于word档。
  Dimension    封装宽度和高度的类
  ImageIcon   图标类 加载一个图片文件到程序中

上述的1-2中提供的类是javax.swing包的类。 在写的时候必须要加上包名。
  FlowLayout和Dimension是在java.awt包下
  ImageIcon是在javax.swing包下。

3.实现一个登录界面
  1.新建一个Login.java的类,然后在类中定义主函数和初始化界面的方法。
  2.在主函数中,实例化Login类的对象,调用初始化界面的方法。
  3.实例化一个JFrame顶级容器窗体对象,设置窗体对象的属性值:大小,标题,显示位置,布局,关闭,可见
  4.创建组件类的对象,将组件添加到窗体上。

首先举例理解一下接口的概念:

package xxj.interface0528;

//定义一个Shape图形接口,接口可以继承多个父接口
public interface Shape extends java.awt.event.ActionListener {

//定义常量
public static final String NAME = "熊哥";

//定义抽象方法(不能有方法体)
public abstract void draw();

}

package xxj.interface0528;

import java.awt.event.ActionEvent;

//定义一个ShapeImpl类,该类实现Shape接口,ShapeImp也可以继承某一个类去实现一个或多个接口
public class ShapeImpl extends Object implements Shape {

public static final String NAME1 = "熊哥";//虽然ShapeImpl中没有“NAME1”的属性,但是他的接口shap中有该属性,所以可以调用
//必须要实现接口中所有的抽象方法(接口的父接口中的方法也必须要实现)
//实现Shape接口中的draw抽象方法
public void draw(){
System.out.println(NAME+"正在绘制图形!");
}
//实现ActionListener接口中的actionPerformed抽象方法
public void actionPerformed(ActionEvent e){

}

public static void main(String[] args) {
ShapeImpl shape = new ShapeImpl();//接口不能实例化,但是类可以
shape.draw();
}

}

实战操作:

练习
1.实现登录界面的登录功能
2.扩展:根据输入的账号和密码做验证,如果输入的账号和密码正确,显示画图界面;如果输入的账号和密码错误,显示消息提示框界面。

public class jiemian {
// 1.程序的入口主函数

public static void main(String[] args) {
// 2.在主函数的方法中,实例化jiemian类的对象,调用初始化界面的方法。
jiemian j = new jiemian();
j.tuxiang();
}

// 1.设置登录界面的方法
public void tuxiang() {
// 3.实例化一个JFrame顶级容器窗体对象,
JFrame jf = new javax.swing.JFrame();
// 3.设置窗体对象的属性值:大小,标题,显示位置,布局,关闭,可见
jf.setSize(300, 400);
jf.setTitle("界面");
jf.setLocationRelativeTo(null);// 设置窗体的显示的位置,null表示窗体显示在屏幕的中央
jf.setDefaultCloseOperation(2);// 设置关闭窗体时,2关闭窗体退出程序
// 实例化一个流式布局类的对象,布局类是针对容器的,容器上要添加多个组件,那么必须要设置排列对齐方式
FlowLayout f1 = new java.awt.FlowLayout();
jf.setLayout(f1);// 设置窗体的布局方式为流式布局。
// 4.定义一个ImageIcon类,该类用来读取一个磁盘上的图片文件。
ImageIcon image = new javax.swing.ImageIcon("D:\\eclipse\\1.PNG");// 创建一个JLabel类的对象,用来显示加载的图片
JLabel labelImage = new javax.swing.JLabel(image);
jf.add(labelImage);// 将labelImage添加到窗体上
// 实例化一个JTextField类的对象
JTextField textName = new javax.swing.JTextField();
// 实例化一个封装组件宽度和高度的Dimension类的对象
Dimension dim = new java.awt.Dimension(200, 30);// 设置textName组件的大小
textName.setPreferredSize(dim);
jf.add(textName);// 将textName添加到窗体上
// 创建一个JLabel类的对象,用来显示如何购买
JLabel lableShopping = new javax.swing.JLabel("如何购买");
jf.add(lableShopping);// 将labelShopping添加到窗体上
JPasswordField nextName = new javax.swing.JPasswordField();
Dimension nex = new java.awt.Dimension(200, 30);
nextName.setPreferredSize(nex);
jf.add(nextName);

javax.swing.JLabel lablePassword = new javax.swing.JLabel("输入密码");
jf.add(lablePassword);

javax.swing.JCheckBox cb1 = new javax.swing.JCheckBox("记住密码");
jf.add(cb1);
javax.swing.JCheckBox cb2 = new javax.swing.JCheckBox("忘记密码");
jf.add(cb2);

JButton butdenglu = new javax.swing.JButton("登录");
Dimension thi = new java.awt.Dimension(150, 30);
butdenglu.setPreferredSize(thi);
jf.add(butdenglu);
jf.setVisible(true);// 设置窗体为可见
jiemianListener jp = new jiemianListener();//实例化jiemianListener类
butdenglu.addActionListener(jp);//给事件源butdenglu添加动作监听方法,指定事件处理类的对象jp
jp.setJiemian(jf);//将jiemian类中的窗体对象借给jp对象
jp.setNextName(nextName);//监听方法捕获密码的输入
jp.setTextName(textName);监听方法捕获文本框的输入

}
}

package wenya.interface527;

import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class jiemianListener implements ActionListener {
//ActionListener是系统自带的接口
public JFrame jiemian;//public 对象类型 对象名 声明登录界面窗体的属性值对象名
//设置登录界面窗体对象的方法(向其jiemian类借JFrame窗体对象的方法)
public void setJiemian(JFrame j) {
jiemian = j;
}

//向jiemian类借密码的输入

public JPasswordField nextName;

public void setNextName(JPasswordField nex) {
nextName = nex;
}

//向jiemian类借文本框的输入
public JTextField textName;

public void setTextName(JTextField dim) {
textName = dim;
}
/**
* 1.实现接口中的抽象方法(事件处理方法)
* @param e是ActionEvent类型的参数对象,对象中存储了事件源上显示的文字信息和事件源对象
*/

public void actionPerformed(ActionEvent e) {

String str = new String(nextName.getPassword());//获得密码和文本输入的新的方法,相当于“nextName.getText()”

if (str.equals("1229")&&textName.getText().equals("wenya")) {
JFrame frame = new JFrame();
frame.setTitle("画图");
frame.setSize(600, 500);
frame.setDefaultCloseOperation(2);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
jiemian.dispose();
} else {
JFrame frame = new JFrame();
frame.setTitle("提示框");
frame.setSize(600, 500);
frame.setDefaultCloseOperation(2);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
jiemian.dispose();

}
}
}

运行结果:

转载于:https://www.cnblogs.com/java-7/p/5537959.html

接口与事件之图形界面的认证登录相关推荐

  1. Java图形界面开发—简易登录注册小程序

    登录注册小代码,将学过的一些小知识融合在一起进行了使用,加深印象.本例中如果有注释不详细的地方,详见其它博客. Java程序操作数据库SQLserver详解 功能介绍:简单的登录注册系统,使用了数据库 ...

  2. java 图形界面 登陆_java登录图形界面

    编写程序,利用JtextField和JpasswordField分别接收用户输入的用户名和密码,并对用户输入的密码进行检验.对于每个用户名有三次密码输入机会. package beizi; impor ...

  3. Linux图形界面与命令行界面

    文章目录 一.Linux图形界面 1.X Window System(C/S)模式 2.窗口管理器 3.显示管理器 4.Widget库 5.桌面环境 二.Linux命令行界面 1.仿真终端窗口 2.文 ...

  4. linux图形界面为英文,Linux下“英文控制台 中文图形界面”的实现

    以Slackware12.2为例: 首先安装好slackware12.2,装好后敲入startx,进入图形界面.第一次登录图形界面时会提示你是哪国人(查下户口先^_^),坚定的选择中国,默认语言就是简 ...

  5. Linux系统关机重启,登录root用户,图形界面和字符界面,创建用户,删除用户,查看虚拟控制台用户,切换虚拟控制台

    操作系统:Windows 10 ×64 虚拟机:VMware 15 ISO镜像:RHEL7.0 首先进入VMware 15虚拟机 进入图形界面登录普通用户 输入密码 进入后打开terminal 输入s ...

  6. 阿里云服务器更换Ubuntu操作系统并配置图形界面

    文章目录 阿里云服务器更换Ubuntu操作系统并配置图形界面 环境 目标 更换操作系统 登录阿里云服务器管理控制台 进入实例管理页面 停止实例 更换操作系统 配置图形界面 远程连接到服务器 配置图形界 ...

  7. 多宽带联网(三) OpenWrt中使用cURL方法编写Shell脚本自动完成网页宽带认证登录(校园网认证登录解决方案) 使用awk命令

    对于非PPPoE方式认证,而是采用网页认证登录的宽带用户(如校园网).采用<多宽带联网(二)>中的方法一个一个接口进行认证登录过于繁琐.本节将采用Shell脚本和cURL方法,模拟人工认证 ...

  8. java图形界面的监听_非专业码农 JAVA学习笔记 用户图形界面设计与实现-所有控件的监听事件...

    用户图形界面设计与实现-监听事件 System.applet.Applet (一)用户自定义成分 1.绘制图形 Public voit piant(Ghraphics g){  g.drawLine等 ...

  9. window下使用vnc远程登录linux图形界面和运行应用程序 和odroid Xu4开发板的使用和视频接口VGA、DVI、HDMI的联系

    注:自己曾经尝试过很多次使用VNC远程登录odroid-XU4的开发板,但是连接后均显示未解码的连接,刚开始烧写的是odroid官方的ubuntu系统,我靠,就是因为烧写了这个坑爹的系统,害的自己弄了 ...

  10. Python 图形界面框架 PyQt5 使用指南!

    作者:钱魏Way https://www.biaodianfu.com/pyqt5.html 使用Python开发图形界面的软件其实并不多,相对于GUI界面,可能Web方式的应用更受人欢迎.但对于像我 ...

最新文章

  1. 如何理解PacBio的准确度?
  2. Py之wxPython:利用wxPython设计GUI界面(图片背景+简单按钮)
  3. 纯css3实现美化复选框和手风琴效果(详细)
  4. Python3了,你还在用%和format格式化输出吗
  5. 我用Python玩小游戏“跳一跳”,瞬间称霸了朋友圈!
  6. 简述 JavaScript 作用域与词法分析
  7. 登陆代码 寻找更好的
  8. python做bi系统_2020年很受Python工程师喜爱的5款数据可视化bi软件
  9. [转载]MySQL事务隔离级别
  10. win10卸载电脑管家就蓝屏_Win10系统运行腾讯软件出现蓝屏TesSafe.sys 解决方案
  11. Nginx为什么会比Apache Httpd高效
  12. GitHub上下载资源
  13. Vb自动读取本地HTML,VB读取网页内容 方法汇总 - mystic的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  14. TrinityCore魔兽世界服务器-环境搭建(Debian11)
  15. 输入数字,控制台打印输出大写,如:输入12 ,控制台打印输出:壹拾贰圆
  16. linux sed 目录递归,shell递归遍历目录下的所有文件并统一改名的方法-文件更名...
  17. Android与鸿蒙系统安全(一)
  18. 查找新式BADI的方法
  19. 计算机适应性考试题目,计算机控制考试题目整理
  20. MATLAB函数——premnmx

热门文章

  1. sans webcast
  2. Stereoscopic Player 1.7.4 (SSP) 加载字幕
  3. Sharepoint Portal Server 2005?
  4. iOS UITextField设置起始字符开始位置
  5. 北京互联网人寒冬求职记
  6. 盘点电商大战背后的技术力量支撑
  7. 惊心动魄的阿波罗登月:软件和程序员才是幕后的英雄
  8. 强烈建议每个技术人做下这个测评,找到你的优势!
  9. matlab处理足球数据,如何用MATLAB画一个足球出来?
  10. shell基础之编译安装nginx