监听器与变量的作用域

监听器是用来实现一些可控操作的工具,如你在打开一个QQ界面的时候,点击登入按钮,这时就有一个监听器在执行登入这一方法。添加监听器的一般格式为:
需要加监听器的对象.add执行命令名Listeneer(实现接口的类);
代码如:Jframe.addMouseListener(DrawListener);
若你想在某一登入界面上加上一个按钮的监听器,其代码则为:
package Loginfrme;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
public class JavaTest {
public static void main(String[] args){
	//创建窗体对象
			JFrame jf = new JFrame();
			//设置标题
			jf.setTitle("QQ2012");
			//设置窗体大小
			jf.setSize(180,150);
			//设置窗体大小不可变
			jf.setResizable(false);
			//设置窗体默认关闭方式
			jf.setDefaultCloseOperation(3);
			//创建窗体布局方式
			FlowLayout fl=new  FlowLayout();
			//运用这个布局方式
			jf.setLayout(fl);
			//创建标签对象
			JLabel jl=new JLabel("账号:");
			//把标签添加到窗体上
			jf.add(jl);
			//创建注册账号输入框对象
			JTextField jtf =new JTextField(10);
			//运用账号输入框
			jf.add(jtf);
			//创建密码标签对象
			JLabel jl_pwd =new JLabel("密码:");
			//把密码添加到窗体
			jf.add(jl_pwd);
			//创建密码输入框
			JPasswordField jtf_pwd=new JPasswordField(10);
			//在窗体中运用密码输入框
			jf.add(jtf_pwd);
			//创建登入按钮对象
			JButton jb =new JButton("登入");
			jb.setActionCommand("login");
			jf.add(jb);
			//创建注册按钮对象
			JButton jb_c =new JButton("注册");
			jb_c.setActionCommand("regist");
			jf.add(jb_c);
			ImageIcon icon = new ImageIcon("image/aa.png");
			JLabel label = new JLabel(icon);
			jf.add(label);
			//建立窗体可视设置
			jf.setVisible(true);
			//创建登入按钮监听器
			LoginListen lis=new LoginListen(jtf,jtf_pwd);
			lis.jf1=jf;
			//建立到按钮上
			jb.addActionListener(lis);
			//创建注册按钮监听器
			LoginListen log=new LoginListen(jtf,jtf_pwd);
			log.jf1=jf;
			//建立到按钮上
			jb_c.addActionListener(log);
			java.util.Random ran=new java.util.Random();
					int i=ran.nextInt(300)+200;
			}
}
import java.awt.event.*;
import javax.swing.*;
public class LoginListen implements ActionListener{
	//定义属性
	JTextField jtf;
	JPasswordField jtf_pwd;
	JFrame jf1;
	public LoginListen(JTextField jt,JPasswordField jp){
		jtf=jt;
		jtf_pwd=jp;
	}
	public void actionPerformed(ActionEvent e){
		String command=e.getActionCommand();
		if("login".equals(command)){
		//得到用户名
		String user=jtf.getText();
		String pass=jtf_pwd.getText();
		if("123".equals(user)&&"asd".equals(pass)){
			System.out.println("登入账号是:"+user);
			System.out.println("登入密码是:"+pass);
			jf1.dispose();
			JFrame jf2=new JFrame();
			jf2.setSize(280,200);
			jf2.setVisible(true);
		}else{
			javax.swing.JOptionPane.showConfirmDialog(null, "登陆失败!");
	}
	}else if("regist".equals(command)){
			jf1.dispose();
			JFrame jf3=new JFrame();
			jf3.setSize(280,200);
			jf3.setVisible(true);
			System.out.println("注册");
		}

	}
}
变量的作用域分为全局变量和局部变量,全局变量作用于整个类中,局部变量则是作用于当前的某一方法中。如代码:
public class Num{
	public static void main(String[]args){
		int x=15;
		if(x==10){
	int y=20;
	System.out.println(“x,y的值为:”+x+””+y);
	x=y+x;
	}
	//y=10;(错误)
	System.out.println(“x的值为:”+x);
	
	}
}
执行后得到的结果分别为:15 20;35如上面注释掉的y=10在不注释的情况下就会报错,而x=x+y这行代码为什么不报错呢?这就是因为在前面定义的x 起的作用,它可以用于整个语句,定义的y只能作用于if语句内。

你可能感兴趣的:(监听器)