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

监听器与变量的作用域

 
阅读更多
监听器是用来实现一些可控操作的工具,如你在打开一个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语句内。
分享到:
评论

相关推荐

    AngularJS 0005:作用域

    `$emit`用于向父作用域发送事件,`$broadcast`用于向所有子作用域发送事件,`$on`用于注册事件监听器。 总的来说,AngularJS的作用域是数据模型和视图之间的重要连接,它提供了一种高效的数据绑定机制和事件通信...

    Jmeter 各组件执行顺序与作用域

    配置元件的作用域可以跨线程组,这意味着在某个线程组定义的配置元件中的变量可以在其他线程组中被引用。 2. 前置处理器: 前置处理器在采样器执行请求之前运行,通常用于执行一些预处理任务,如动态生成请求数据或...

    Angularjs全局变量被作用域监听的正确姿势

    2. **理解作用域生命周期**:在控制器的`$destroy`事件中,应清理所有的watch,以确保在控制器被销毁后,不再有监听器在后台运行。AngularJS的`$destroy`方法会禁用所有的监听器、watcher以及apply/digest方法。确保...

    学习Angular中作用域需要注意的坑

    这意味着,如果在父作用域中定义了一个变量,内部控制器可以访问到它。然而,JavaScript的原型链继承只适用于引用类型,不适用于基本类型。在上述例子中,`$scope.a`被定义为基本类型(数字),因此,当`InnerCtrl`...

    AngularJS Controller作用域.docx

    3. **事件广播与监听**:Controller可以通过 `$scope.$on()` 监听事件,而 `$scope.$emit()` 和 `$scope.$broadcast()` 可以用来在作用域树上向上或向下广播事件,实现不同Controller间的通信。 在JavaScript代码中...

    php闭包中使用use声明变量的作用域实例分析

    在这个例子中,`getClosure`函数接受一个参数`$i`,然后在闭包内部将这个参数与当前时间拼接后赋值给闭包作用域内的同名变量`$i`。之后,这个闭包函数通过`use($i)`将外部的`$i`变量引入到其内部作用域中。这意味着...

    详细谈谈AngularJS的子级作用域问题

    因此,当你尝试在子作用域中修改父作用域的原始类型属性时,实际是在子作用域中创建一个新的局部变量,而不是修改父作用域的属性。为了解决这个问题,可以将原始类型转换为对象类型,然后将值绑定到对象的属性上,...

    javascript执行环境及作用域详解_.docx

    这是因为全局环境负责维护所有的全局变量和函数,以及事件监听器等。 #### 函数执行环境 每个函数都有自己的执行环境。当函数被调用时,它的执行环境会被压入执行环境栈的顶部,并获得执行权。当函数执行完毕,其...

    关于angularJs指令的Scope(作用域)介绍

    - =(双向绑定):用于将父作用域的变量与指令内的变量进行双向绑定,任何一方数据的变化都会反映到另一方。 - &(函数绑定):用于绑定父作用域中的函数,当需要在指令内部调用父作用域中的方法时使用。这种方式常...

    基于javascript 闭包基础分享

    文章中提到了两个例子:第一个例子中,通过一个循环来创建带有闭包的函数数组,但是由于JavaScript变量作用域和循环的作用,所有函数最终都只访问到了循环的最终值。第二个例子通过立即执行函数表达式(IIFE)来解决...

    JBPM深入解析之变量设计

    例如,可以在任务监听器、事件处理器或者业务规则中设置或获取变量值。以下是一个简单的Java示例,展示如何在任务完成后更新变量: ```java Map, Object> variables = new HashMap(); variables.put("myVariable", ...

    Javascript 闭包完整解释

    - **事件处理程序**:在事件监听器中,闭包可以确保即使外部函数已经执行完毕,事件处理函数仍然可以访问到所需的变量。 #### 五、闭包的例子 下面通过一个简单的例子来展示闭包的用法: ```javascript function ...

    JS中的闭包理解。。。。。。。。

    例如,在回调函数、定时器、事件监听器等场景下,闭包被用来保持对特定作用域的引用,如: ```javascript function logMessage(msg) { setTimeout(function() { console.log(msg); }, 1000); } logMessage('...

    javascript真经悟透

    5. **闭包与事件监听器**:在处理DOM事件时,闭包可以用来保持对特定状态的访问,比如计数器或者用户输入状态。 6. **立即执行函数表达式(IIFE)**:利用闭包特性,创建一个独立的作用域,避免污染全局变量,同时...

    Java中Lambda表达式之Lambda语法与作用域解析

    理解Lambda的语法和作用域规则是充分利用这一特性的关键,同时也需要了解其与匿名内部类的异同,以便在适当的情况下选择最佳的实现方式。在实践中,开发者应根据需求和代码的可维护性来决定何时使用Lambda表达式。

    深化解析Javascript闭包的功能及实现方法_.docx

    - **事件处理函数**:当为一个元素添加事件监听器时,监听器函数可以访问定义它的作用域的变量。 4. **闭包的写法示例** 在提供的代码中,虽然没有直接展示闭包,但通过各种函数创建和使用方式展示了闭包的概念。...

    元素的内联事件处理函数的特殊作用域在各浏览器中存在差异

    - 使用`addEventListener`和`removeEventListener`来注册和移除事件监听器,这种方法可以确保在所有现代浏览器中一致的行为,并且可以避免作用域链的问题,因为它们使用的是独立的作用域。 总的来说,内联事件处理...

    Advanced JavaScript

    《函数与变量作用域》章节,深入分析了JavaScript中函数的细节以及作用域规则。这可能包括: - 函数声明与表达式的区别。 - 闭包的原理与应用。 - 变量的作用域链。 - 非局部变量的访问机制。 ### 六、利用...

    JavaScript闭包深入理解.pdf

    3. **事件处理**:在事件监听器中,闭包可以保留事件触发时的上下文,确保回调函数能够正确操作相关变量。 4. **异步编程**:在Promise或async/await中,闭包可以帮助保存异步操作的状态。 深入理解闭包,还需要...

Global site tag (gtag.js) - Google Analytics