`
暗夜魅影
  • 浏览: 20798 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

java中对于时间监听器懵懂到慢慢理解

 
阅读更多

         开始学习监听器的时候觉得很迷茫。对于监听器的理解的迷迷糊糊的,总是感觉思路很乱,不知道到底监听的是哪,实现监听器的类为什么要写很多其他条件,总是在想其他条件是不是也是在监听之中的

        后来通过对监听器的不断地应用,和看一些代码才慢慢的理解的监听器的用法

        其实原来总是把监听源事件和监听器处理类中的条件搞混

         我们在程序中加监听器基本思路就是

        1、   ——   创建一个类来实现你所需要的监听器的接口,如果是多个监听器可以直接加逗号一起实现

                         而在其中我们要写的其实是指这个监听器监听的事件源发生指定的事件

                         后我们要进行的操作或者动作,及要触发的下一个事件!

                         ~  当然里面我们 或许会用到一些其他地方的判断,而这些判断只是

                               作为 触 发源事件之后我们想要触发下一  步操作的条件

                              就比如下面代码事件处理类中的两个JTextFiled虽然有他们中的内容的比

                               较,但是他们只是作为一个属性在事件处理类里从其他类中引入里面的、

                               内容,并不是监听他们中的内容作比较

                             ——里面主要做的还是当监听对象触发事件后要做的下一步动作

          2、     ——  在你要监听的事件源所在的类里实例化一个事件监听处理对象

                             然后把监听器绑定事件处理类对象

    *************************************

                         这样监听器工作就是

                                当你绑定的事件源发生相应的事件后,程序就转入事件处理类中判断

                          事件源发生的动作首先找到相应动作的处理方法,然后执行里面的判断,找到

                          对应的条件然后执行下面的操作

**************——对下面的程序就是当点击登录按钮的时候,就出发了ActionListener,然后就

                         转入LoginListener中进行事件的处理,因为ActionListener就是当按钮按下

                    的 时候执行的,所以就直接是下面事件处理类中的方法,然后获取JTextfiled

                         的内容,找到相应的   if   然后执行下面的动作命令

~~~~~~~~~~~~~~~~

            开始学的时候真的觉得挺迷茫的,现在懂了写出来感觉那时候的纠结真的挺幼稚

  的,不过java的学习的确有时候我们开始学的时候真的不是很懂,我们其实有时候不用去想简单的语言去理解,只要多看看一些用到这些的代码应用,即便开始是生硬的套用,等用的多了自然也就慢慢的理解了

 

public class Login extends JFrame {
  
	//主函数
	public static void main(String [] args){
		Login login = new Login();
		login.init();
	}
	
	/**
	 * 初始化界面的方法
	 */
	public void init(){
		//设置窗体的属性
		this.setTitle("TEXT");
		this.setSize(new Dimension(300,200));
		this.setResizable(false);
		this.setDefaultCloseOperation(3);
		this.setLocationRelativeTo(null);
		this.setLayout(new FlowLayout());
		
		//添加账号和密码标签以及输入框对象
		JLabel lblName = new JLabel("账号:");
		JTextField txtName = new JTextField(20);
		this.add(lblName);
		this.add(txtName);
		JLabel lblPwd = new JLabel("密码:");
		JTextField txtPwd = new JTextField(20);
		this.add(lblPwd);
		this.add(txtPwd);
		
		JButton btnLogin = new JButton("登录");
		btnLogin.setActionCommand("Login");
		this.add(btnLogin);
		
		//创建一个事件处理类对象
		LoginListener ll = new LoginListener(txtName,txtPwd);
		
		//给事件源btnLogin添加一个动作监听器方法,绑定事件处理类对象
		btnLogin.addActionListener(ll);
		
		this.setVisible(true);
	}
	
}
/**
 * 登录事件的处理类
 * @author Administrator
 *
 */
public class LoginListener implements ActionListener {

	private String name,pwd;
	private JTextField txtName, txtPwd;
	
	public LoginListener(JTextField txtName, JTextField txtPwd) {
		this.txtName = txtName;
		this.txtPwd = txtPwd;
	}

	/**
	 * 动作事件的处理方法
	 */
	@Override
	public void actionPerformed(ActionEvent e) {
		System.out.println(e.getActionCommand());
		//获取输入的账号和密码
		name = txtName.getText();
		pwd = txtPwd.getText();
		//只要输入的账号和密码都是admin就显示画图界面
		if(name.equals("admin") && pwd.equals("admin")) {
			DrawFrame df = new DrawFrame();
			df.init();
		}else{
			//如果输入的账号和密码不是admin就显示消息提示框
			JOptionPane.showMessageDialog(null, "你输入的账号和密码不正确,请重新输入!");
		}
	}

}
 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics