`
xiaoyjj
  • 浏览: 53186 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

让组件活起来,菜吉吉java总结——监听器

 
阅读更多

这一篇是对登陆界面的设计以及使用监听器的一个总结。

首先创建一个类似QQ的登陆界面。

import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
/**
 * 构建一个登录界面
 * @author 肖一喆
 *
 */

public class Login {
	public static void main(String args[]){
		/**
		 * 创建一个窗体,并设置基本属性,以及布局方式
		 */
		
		JFrame frame = new JFrame();
		frame.setSize(300,200);
		frame.setTitle("QQ登录");
		frame.setDefaultCloseOperation(3);		
		FlowLayout layout = new FlowLayout();
		frame.setLayout(layout);
		
		/*
		 * 添加一些组件
		 */
		JLabel labnum = new JLabel("QQ号码");
		JTextField textnum = new JTextField(20);
		JLabel labpass = new JLabel("QQ密码");
		JPasswordField passw = new JPasswordField(20);
		JButton btnclear = new JButton("清空");
		JButton btnlog = new JButton("登录");
		
		frame.add(labnum);
		frame.add(textnum);
		frame.add(labpass);
		frame.add(passw);
		frame.add(btnclear);
		frame.add(btnlog);
		
		frame.setVisible(true);
		}
	
	
}

 

这样生成的是一个登陆界面。但为了使代码变得更好,就尽量不要在主函数中设计逻辑的问题。只在主函数中调用各种方法,并且争取新建的对象达到最少!所以可以对代码进行改进。就要使得Login这个类继承JFrame,然后在这个类里面定义一个初始化界面的方法,并在主函数中调用他。

import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
/**
 * 构建一个登录界面
 * @author 肖一喆
 *
 */

public class Login extends JFrame{
	
	public  void unitLogin(){
		/**
		 * 初始化一个窗体的方法
		 */
		this.setSize(300,200);
		this.setTitle("QQ登录");
		this.setDefaultCloseOperation(3);		
		FlowLayout layout = new FlowLayout();
		this.setLayout(layout);
		
		/*
		 * 添加一些组件
		 */
		JLabel labnum = new JLabel("QQ号码");
		JTextField textnum = new JTextField(20);
		JLabel labpass = new JLabel("QQ密码");
		JPasswordField passw = new JPasswordField(20);
		JButton btnclear = new JButton("清空");
		JButton btnlog = new JButton("登录");
		
		this.add(labnum);
		this.add(textnum);
		this.add(labpass);
		this.add(passw);
		this.add(btnclear);
		this.add(btnlog);
		
		this.setVisible(true);
		}
	
	
}

/**
 * 主类
 * @author 肖一喆
 *
 */
public class Test {
	public static void main(String args[]){
		/*
		 * 新建一个Login类的对象frame
		 * 并调用初始化界面unitLogin的方法
		 */
		Login frame = new Login();
		frame.unitLogin();
		
		
	}

}

 

这样做的结果跟第一段代码是一样的,只不过使得代码更优秀了。

 

下面就是要往这个界面上添加监听器了。

要让这个界面活起来,就是我们点击清空会把以输入的帐号密码清空重新输入,点击登录便会进行下一步骤。而不是现在这种不管点什么除了关闭按钮其他任何按钮都没有反映的样子。

 

首先创建一个类来实现动作监听器接口,并将ActionListener这个接口下面的方法补全,只有一个actionPerformed这个方法。我们要实现的功能有,从TextField里和PasswordField里输入的帐号和密码以字符串的形式存起来,点击登录按钮时,与默认设置的一对儿QQ号码和密码进行比较,若符合则提示登录中,否则提示密码错误。点击清空按钮时候清除所输入内容。

下面是改进后的代码:

 

/**
 * 主类
 * @author 肖一喆
 *
 */
public class Test {
	public static void main(String args[]){
		/*
		 * 新建一个Login类的对象frame
		 * 并调用初始化界面unitLogin的方法
		 */
		Login frame = new Login();
		frame.unitLogin();
		
		
	}

}


import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
/**
 * 构建一个登录界面
 * @author 肖一喆
 *
 */

public class Login extends JFrame{
	
	public  void unitLogin(){
		/**
		 * 初始化一个窗体的方法
		 */
		this.setSize(300,200);
		this.setTitle("QQ登录");
		this.setDefaultCloseOperation(3);		
		FlowLayout layout = new FlowLayout();
		this.setLayout(layout);
		
		/*
		 * 添加一些组件
		 */
		JLabel labnum = new JLabel("QQ号码");
		JTextField textnum = new JTextField(20);
		JLabel labpass = new JLabel("QQ密码");
		JPasswordField passw = new JPasswordField(20);
		JButton btnclear = new JButton("清空");
		JButton btnlog = new JButton("登录");
		//设置点击按钮时候的命令
		btnclear.setActionCommand("clear");
		btnlog.setActionCommand("login");
		
		
		this.add(labnum);
		this.add(textnum);
		this.add(labpass);
		this.add(passw);
		this.add(btnclear);
		this.add(btnlog);
		
		this.setVisible(true);
		
		//添加监听器
		Listener listen = new Listener(textnum,passw);
		btnclear.addActionListener(listen);
		btnlog.addActionListener(listen);
		}
	
	
}



import java.awt.event.ActionEvent;

import javax.swing.JPasswordField;
import javax.swing.JTextField;


/**
 * 构建一个监听器,实现ActionListener接口
 * @author xiao
 *
 */
public class Listener implements java.awt.event.ActionListener {
	private JTextField text;
	private JPasswordField pass;
	
	public Listener(JTextField text,JPasswordField pass){
		this.text = text;
		this.pass = pass;
	}
	
	public void actionPerformed(ActionEvent e){
		//得到点击按钮后获得的命令来判断点击的是哪个按钮
		String command = e.getActionCommand();
		if(command.equals("login")){
			String textnum = text.getText();
			String passw = pass.getText();
			System.out.println("帐号:"+textnum);
			System.out.println("密码:"+passw);
			if(textnum.equals("673127570")&&passw.equals("12345"))
				System.out.println("登陆成功!");
			else
				System.out.println("帐号或密码错误");
			
		}
		else if(command.equals("clear")){
			text.setText("");
			pass.setText("");
		}
	}

	
}


 

 

这样一个简单的qq登录界面就完成了!

需要注意的地方在Listener那个接口里面重写了他的构造方法,并且在这个类里定义了两个private的变量,我们重载的那个构造方法有两个参数,分别把从TextField里和PasswordField里得到的字符传给那两个变量,来达到把那边输入框中输入的字符传到过来。可以说这种用法相当于c语言中的指针。在通过getText()便可以获得输入框中的字符。来进行帐号密码的比较判定。

 

通过自己写这些代码,希望可以更加熟练的使用监听器这功能。也知道使用的时候要注意很多。比如继承接口的时候要把接口下的方法补全,如果有多个按钮就要获取点击按钮的指令,并通过getActionCommand()获取命令来判断点击的是哪一个按钮来执行接下来的操作。还有就是要弄清每个方法的名字注意期中的大小写。我在写这一段代码的时候用Listener实现了ActionListener这个方法下,补全其中的actionPerformed这个方法的时候我把actionPerformed这个方法名中的P给弄成小写的p了。报错,但怎么我也没发现是哪里不对。最后使用软件自动更正发现又给重新定义了一边actionPerformed这个方法,我才发现是自己大小写弄错了。所以以后在做会很注意这些细节。还有包括{};这些符号要用英文的符号等等。……~

 

 

分享到:
评论

相关推荐

    吉吉写作.rar

    《吉吉写作——高效创作的秘密武器》 在数字化时代,写作工具已经成为许多创作者不可或缺的伙伴。其中,“吉吉写作”以其独特的功能和优秀的用户体验,深受广大写作者的喜爱。这款软件不仅具备基本的文字编辑功能,...

    吉吉影音

    吉吉影音

    吉吉影音 正版采集

    【吉吉影音正版采集】是本文的核心话题,它涉及到的是一个与软件相关的技术主题,特别是与吉吉影音这款软件的数据采集和处理有关的系统或工具。吉吉影音是一款知名的多媒体播放软件,它允许用户观看和播放各种视频...

    吉吉影音播放器下载 V2.8.0.1 官方版

    【吉吉影音播放器】是一款深受用户喜爱的多媒体播放软件,尤其在V2.8.0.1这个官方版本中,它集成了多种先进的技术,为用户提供流畅、高清且稳定的观影体验。作为一款多功能的播放工具,吉吉影音支持多种视频格式,...

    吉吉影音组抢先版

    吉吉影音组抢先版

    吉吉影音播放器

    【吉吉影音播放器】是一款深受用户喜爱的多媒体播放软件,尤其在流媒体播放领域具有较高的知名度。它集成了先进的视频解码技术,能够支持多种格式的音视频文件,为用户提供流畅、高清的观影体验。下面我们将深入探讨...

    吉吉影音资源站采集插件

    吉吉影音资源站采集插件

    吉吉影音破解版

    去掉播放器广告,去掉速度限制,去掉流氓插件

    吉吉写作V2.0

    吉吉写作是一款写作必备的辅助软件,整个软件仅仅1M多,下载、安装及移动都十分方便。她不能自动为你写出一个字来,但是她能够为你提供一个高效的写作平台,帮助你从一些烦琐的事情中解脱起来,把精力集中在创作上,...

    吉吉音影发布端

    "吉吉音影发布端"是一款专为网络视频分享和流媒体服务设计的软件工具,主要功能是帮助网站管理员管理和发布视频内容。该发布端可能包含了一整套的解决方案,涵盖了视频上传、编码、存储、分发以及播放等多个环节,...

    吉吉播放器

    吉吉播放器

    吉吉写作 V1.2 绿色注册版

    吉吉写作是一款写作必备的辅助软件,她不能为你写出一个字来,但是她能够为你提供一个高效的写作平台,帮助你从一些烦琐的事情中解脱起来,把精力集中在创作上,提高你的写作效率。自动保存备份功能可使你安心写作,...

    吉吉写作助理

    吉吉写作是一款写作必备的辅助软件,她不能为你写出一个字来,但是她能够为你提供一个高效的写作平台,帮助你从一些烦琐的事情中解脱起来,把精力集中在创作上,提高你的写作效率。 吉吉写作是一款免费的绿色软件...

    吉吉写作软件

    《吉吉写作软件:创作旅途中的得力助手》 吉吉写作软件,作为一个专为作家和写作爱好者设计的工具,其强大的功能和易用性使其成为居家旅行的必备之选。这款软件集成了多种写作需求,无论是初涉文坛的新手还是经验...

    手机吉吉播放器

    手机吉吉播放器支持多种视频和音频格式,包括但不限于MP4、AVI、MKV、FLV、WMV、MP3、AAC等,让用户无需担心格式不兼容的问题。无论您是喜欢看电影、听音乐还是观看网络课程,手机吉吉播放器都能轻松应对,满足您的...

    吉吉写作1.0

    "吉吉写作1.0"是一款专为提升写作体验而设计的应用程序,旨在让文档创作变得更为简单和高效。这款软件提供了丰富的功能,使得用户在写作过程中能够享受到流畅的体验和便捷的保存机制,从而降低了写作的难度和压力。 ...

    飞飞cms2.8补丁 含西瓜影音先锋吉吉

    飞飞cms2.8补丁 含西瓜影音先锋吉吉

Global site tag (gtag.js) - Google Analytics