接口与事件之图形界面的认证登录

概念的介绍:

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();

}
}
}

时间: 2024-07-29 22:39:06

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

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

登录注册小代码,将学过的一些小知识融合在一起进行了使用,加深印象.本例中如果有注释不详细的地方,详见其它博客. Java程序操作数据库SQLserver详解 功能介绍:简单的登录注册系统,使用了数据库sqlserver.单例模式.正则表达式以及图形化开发等知识. 1.在登录界面,可以登录或者注册用户. 注册用户界面,按照正则表达式规定的格式要求来输入信息,若有误,则重新输入. 2.点击注册,首先连接SQLserver数据库,连接成功则会判断该用户名是否已经存在,若存在,则给出提示.反之则进行注册

Java 图形界面开发--图文并茂建立学生管理系统

图形用户界面(Graphics User Interface,GUI)是用户与程序交互的窗口,比命令行的界面更加直观并且更好操作. 这是本人在学习java图形界面开发阶段一步一步实现的超级简易的学生管理系统.虽然说不入大神法眼,但这确实是费了自己不少心血.对于我这样的菜鸟来说,考虑不周到,一不小心就Exception,然后就是自己调呀调.在此分享出来希望对和我一样的菜鸟有帮助. 程序完整代码下载地址见: https://github.com/chaohuangtianjie994/The-Sys

WINDOWS下用XWin32 连接Linux图形界面

如果有WINDOWS想用图形界面管理远程的LINUX服务器,或调试Linux图形软件.用Xwin32这个商业软件可能是一个选项,它很小,但是功能齐全. Windows下可以通过SSH客户端或Telnet程序远程登录到Linux/Unix 上进行管理,编程开发和调试字符界面程序.比如用Magic Unix C++这样的Windows 下的集成开发环境.界面完全模仿VC++ 6.0.可以象VC++单步调试Windows程序一样,去调试Linux或Unix远程主机应用程序.非常高效和方便. Linux

Ubuntu无法进入图形界面解决方案

虚拟机安装Ubuntu后显示登陆界面,输入密码黑屏,无反应,这种情况下按 Ctrl + Alt + F1 进入命令行界面,输入用户名密码 双显卡解决方案 nvidia驱动问题 nvidia显卡驱动问题,终端输入以下命令: sudo apt-get install nvidia-current sudo nvidia-xconfig 安装nvidia的过程很长,完了以后重启:sudo reboot 如果上述过程无效则点击下面的链接: 备选方案 如果只能以guest身份登陆图形界面: 在登录界面按c

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

用户图形界面设计与实现-监听事件 System.applet.Applet (一)用户自定义成分 1.绘制图形 Public voit piant(Ghraphics g){  g.drawLine等图形名称(坐标1234);g.file图形名(坐标123)} 2.设置字体-Font类 (1)定义font:Font myfont=new Font(“字体”,”样式”,字号); 例如:Font myfont=new Font(“宋体”,Font.BOLD,12); (2)引用定义的Font:类/容

十. 图形界面(GUI)设计3.标签、按钮和按钮事件

标签和按钮也许是图形界面中最常见的两种组件,按钮又总是与激发动作事件有关. 标签 标签(JLabel)是最简单的Swing组件.标签对象的作用是对位于其后的界面组件作说明.可以设置标签的属性,即前景色,背景色.字体等,但不能动态地编辑标签中的文本. 程序关于标签的基本内容有以下几个方面: 声明一个标签名: 创建一个标签对象: 将标签对象加入到某个容器. JLabel类的主要构造方法是: JLabel ():构造一个无显示文字的标签: JLabel (String s):构造一个显示文字为s的标签

Java图形界面实战如何用键盘控制小球的移动以及接口的讲解

如何实现小球的移动 还是先走一个小球吧,已经做了很多次了,我们开始思考,如果用户按了键盘上的一个键,那么子啊整个计算机系统中,谁最先知道这件事情呢?这个大家都可以猜出来没错就是键盘,不过后面的事情,键盘到底是通知给谁了?我们干脆跳过中间环节吧,一定会到操作系统对吧?如果你的程序要能够响应用户的输入,是不是操作系统要将这件事情通知给你的程序?系统怎么能够把一件事情通知到你的程序呢?其实之前我们遇到过类似和系统打交道的事情无论是开始的main,还是重画的paint,抑或是线程的run都是和系统打交道

C语言控制台窗口图形界面编程(八):鼠标事件

<知识分享> 上次讲的是键盘事件,这次我们介绍鼠标事件.下面先介绍下鼠标事件的结构体以及相关信息. typedef struct _MOUSE_EVENT_RECORD      //鼠标事件结构体 { COORD dwMousePosition;      //当前鼠标在控制台窗口缓冲区的位置 DWORD dwButtonState;        //鼠标按键的状态 DWORD dwControlKeyState;    //控制键状态 DWORD dwEventFlags;       

五,图形界面编程

五,图形界面编程 一,图形界面编程swt; 1,awt 1,图形类 Button 2,辅助类 1,工具类 2,字体类 3,颜色类 2,Swing 1,图形类 jButton 二,容器与组件 1,首层容器 Contoner 1,所有的中间容器和组件都放在首层容器里 2,常用的首层容器 JApplet-动画效果-过时 Jdiologo-弹出框 Jframe-常用的首层容器 Jwindow 3,先new jframe对象,在设置宽高 ,ste size(宽,高): 内宽高,先水平在垂直先宽后高,单位像