`

java实现简单的窗体和密码验证(传参,事件机制和事件监听的作用过程)

阅读更多

 

 <div class="iteye-blog-content-contain" style="font-size: 14px"></div>

 

 话说这是卤煮的第一篇博客呢,没想到是关于java的,第一篇写点简单轻松的吧。

通过写这个小程序,可以帮助我们理解传参的方法,事件机制和事件监听的作用过程。

 

首先,我们要实现一个窗体,包括文本框,标签,标题,按钮等等(这些都在java.swing包中),这些都必须装到一个容器中,即窗体中。

因此,我们需要创建一个JFrame对象,再调用add方法,将创建的各个组件加入JFrame窗体中。创建对象的方法是:类名 对象名 = new 类名();

再调用JFrame类型的对象frame下的setVisible()方法,参数为true。

		frame.setVisible(true);//设置窗体可视

这样,我们就能看的画出的窗体了。

 

需要注意的是,在画窗体的时候,记得加上

frame.setDefaultCloseOperation(3);//设置点击关闭按钮时,关闭并退出,EXIT_ON_CLOSE = 3

这样一条语句,这样在点击关闭按钮时,程序才会真正退出并关闭,其中,3表示EXIT_ON_CLOSE。

另外,在以后的应用中,经常会用到Graphics()画笔,而Graphics必须由JFrame的getGraphics()方法得到,要记得只有在setVisible(true)之后才能得到画笔,否则,得到的画笔为null。

 

下面,要使按钮发挥作用,当鼠标点击时,得到文本并进行比较,根据不同的比较结果进行不同的显示

首先,事件源在按钮上,当鼠标点击按钮时,才执行相应的处理方法。所以,在按钮上添加监听器方法addActionListener();addActionListener需要一个ActionListener类型的参数,ActionListener是一个事件接口,因此,我们要新建一个Listener类实现ActionListener接口,实现其中的抽象方法

public class Listener implements ActionListener {
	public void actionPerformed(ActionEvent e) {}
	}

实现输入比对中,卤煮遇到一个问题:如何得到输入在文本框中的文本并传到Listener类中的事件处理方法中进行对比处理?经过自己的思考和胡哥指点后,终于解决了这个问题。

这涉及到一个传参的问题,传参的方法有两个:构造方法传参和set方法传参。这里用的是set方法传参,通过重载set方法实现参数的传递。

                private JTextField jtf;//写在类下面,是全局JTextField类型变量
		public void setTJF(JTextField jtf){  //文本框的set方法,传人JTextField类型参数
			this.jtf = jtf;  //将传人的JTextField类型变量赋予当前的jtf
		}

再在JFrame类中的showFrame()方法中调用Listener的set方法,传入文本框中的文本

ls.setTJF(te);   //调用setTJF方法,使该输入框的文本te传人监听器类中

这样,就得到了JFrame中输入在文本框中的文本,比较后,再重新绘制窗体,文本正确,则输出“登陆成功”,否则,输出“登陆失败”。本程序的输出在重绘的文本框中。

 

我对监听过程的理解是这样的:在按钮添加了监听器方法后,当用鼠标点击了按钮之后,监听器方法获得事件源和事件源上发生的动作通过后台传给ActionEvent,然后调用事件接口的actionPerformed()方法进行处理。

 

全部代码如下:

 

package cn.lzj0713;

public class JFrame {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		JFrame show = new JFrame();//创建一个JFrame类型的对象
		show.showFrame();//调用JFrame下的showFrame方法
	}
	
	
	/**
	 * showFrame方法,用来实现图形界面
	 */
	public void showFrame(){
		javax.swing.JFrame frame = new javax.swing.JFrame();//实例化JFrame类型的对象frame
		frame.setTitle("my frame");//设置标题
		java.awt.FlowLayout fl = new java.awt.FlowLayout();//实例化FlowLayout类型对象
		frame.setLayout(fl);//设置流式布局
		javax.swing.JLabel la = new javax.swing.JLabel("名字");//设置标签
		javax.swing.JTextField te = new javax.swing.JTextField(8);//设置文本框,长度为8
		javax.swing.JButton bu = new javax.swing.JButton("登陆");//设置登陆按钮,上书“登陆”二字
		//把以上的各个组件都加到JFrame类型的容器frame中
		frame.add(la);
		frame.add(te);
		frame.add(bu);
		frame.setSize(300,200);//设置窗体大小
		frame.setDefaultCloseOperation(3);//设置点击关闭按钮时,关闭并退出,EXIT_ON_CLOSE = 3
		frame.setVisible(true);//设置窗体可视
		
		Listener ls = new Listener();//创建一个Listener类型的对象
		bu.addActionListener(ls);//向按钮bu添加监听器方法
		ls.setTJF(te);   //调用setTJF方法,使该输入框的文本te传人监听器类中
		
		
	}

}

 

package cn.lzj0713;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JTextField;
/**
 *这是一个实现 ActionListener接口的类
 * @author lzj
 *
 */
public class Listener implements ActionListener {
		private JTextField jtf;//全局JTextField类型变量jtf
		public void setTJF(JTextField jtf){  //文本框的set方法,传人JTextField类型参数
			this.jtf = jtf;  //将传人的JTextField类型变量赋予当前的jtf
		}
	//监听器的事件处理方法
	@Override
	public void actionPerformed(ActionEvent e) {
		String str = jtf.getText();//获得JFrame文本框上的文本,赋予str
		System.out.println(str);//输出str

		//判断输入字符是否符合预期,是则显示登录成功界面;否则显示登录失败界面
		if(str.equals("lzj")){
		javax.swing.JFrame frame = new javax.swing.JFrame();//创建一个JFrame对象
		frame.setTitle("my frame");//设置标题
		java.awt.FlowLayout fl = new java.awt.FlowLayout();//实例化FlowLayout类型对象
		frame.setLayout(fl);//设置流式布局
		javax.swing.JTextField te = new javax.swing.JTextField(8);//设置文本框,长度为8
		te.setText("登陆成功");//设置文本框中显示的文本内容
		////把以上的各个组件都加到JFrame类型的容器frame中
		frame.add(te);
		frame.setSize(300,200);
		frame.setDefaultCloseOperation(3);
		frame.setVisible(true);
		}else{
			jtf.setText("登录失败");
		}

	}

}

 

这次编程学到了:

1.传参的方法:构造方法传参和set方法传参

2.getGraphics要写在setVisible之后

3.事件机制

 

 

分享到:
评论

相关推荐

    运行jar程序时添加vm参数的方法

    在Java开发中,有时我们需要对运行的JAR程序进行一些高级配置,比如调整虚拟机(JVM)的堆内存大小,开启远程监控等。本文将详细介绍如何在运行JAR程序时添加虚拟机(VM)参数。 首先,让我们理解什么是VM参数。VM...

    接收弹出页面的回传值

    此外,如果你的项目使用了像jQuery这样的库,可以利用其提供的便利API来简化事件监听和处理过程。例如,`$.on()`和`$.postMessage()`。 通过这种方式,A页面可以弹出B页面,B页面在关闭时将数据回传给A页面,实现了...

    移动计算实验编程(android编程)

    在这个实验中,我们关注的是如何使用Android Studio来实现这个功能,包括在不同的Activity之间传递参数以及为登录按钮添加监听事件。 首先,我们需要理解Activity的概念。在Android应用中,Activity是用户界面的...

    fileUpload文件上传组件例子

    测试用例通常会涵盖正常情况、边界条件和异常情况,帮助开发者全面了解组件的运行机制。 总的来说,"fileUpload文件上传组件例子"是一个综合性的示例,涵盖了从用户选择文件到文件成功上传到服务器的整个流程。通过...

    BBS系统-基于JSP、ECLIPSE、MYSQL

    在这个项目中,你需要理解Web应用的基本结构,如`WEB-INF`目录下的`web.xml`配置文件,它定义了Servlets、过滤器和监听器等组件。你还需要了解如何在ECLIPSE中创建动态Web项目,并设置服务器运行环境。 5. **HTML...

    ssi框架搭建

    Struts2提供了强大的表单验证机制,可以在服务器端对用户的输入数据进行验证,确保数据的有效性和安全性。 - **配置文件**:对于需要验证的Action,需要在同一级目录下创建一个名为`类名-请求名-validation.xml`的...

Global site tag (gtag.js) - Google Analytics