Java 入门

[color=indigo] 只有在图形界面上加入对事件的处理,才会让界面有意义
在QQ的登录界面上,按下了“登录”按钮,服务器才会检测你的账号密码是否正确,决定你能否登录成功。

那么什么时候发生了事件呢,在生活中,如果不去时不时看看,你不会知道。在Java,就叫做Listener。Java给我们提供了各种Listener。[/color][/align][img]http://dl.iteye.com/upload/attachment/556860/e607c126-58b3-377e-8318-10c3b978f59c.jpg[/img]

1.
最简单的举例就是关于按钮的监听。

当我们将按钮按下的时候按钮的状态就发生了改变,那么这个按下的事件就是要被我们监听的。
这时要用到ActionListener。
简单的创建一个按钮的监听器

package jiantingqi;

import java.awt.event.ActionEvent;//一般会自动import进来,如果没有一定要手动。

public class ButtonListener implements java.awt.event.ActionListener {
/**
* ActionListener 里面只有一种抽象方法,就是actionPerformed(ActionEvent e),此时只需要重写这个方法。
*/
public void actionPerformed(ActionEvent e){
System.out.println("矮油~我被按了一下!");

}
}


package jiantingqi;

;

/**'
* 创造一个简单的图形界面
* @author 小湖
*
*/
public class SimpleUI extends javax.swing.JFrame {
public static void main (String args[]){
/**
* 实例化一个窗口对象
*/
SimpleUI su = new SimpleUI();
su.setTitle("简单窗体");
su.setSize(300, 200);

/**设置布局管理
*
*/
java.awt.FlowLayout fl = new java.awt.FlowLayout();
su.setLayout(fl);

/**
* 实例化简单的组件 标签 、文本框、 按钮
*/
javax.swing.JLabel jl_code = new javax.swing.JLabel("账号");//JLabel的构造方法可以直接传入字符串

javax.swing.JTextField jt_code = new javax.swing.JTextField(20);//JTextField 可以直接传入长度

javax.swing.JLabel jl_password = new javax.swing.JLabel("密码");

javax.swing.JPasswordField jpf= new javax.swing.JPasswordField(20);

javax.swing.JButton jb = new javax.swing.JButton("登录");//可以直接传入按钮的名称

/**
* 将组件逐一添加到窗体中
*/

su.add(jl_code);
su.add(jt_code);
su.add(jl_password);
su.add(jt_password);
su.add(jb);

/**
* 关闭时退出程序
*/

su.setDefaultCloseOperation(3);

/**
* 让窗体课件
*/
su.setVisible(true);

/**
* 设置监听器对象
*/
ButtonListener bl = new ButtonListener();
jb.addActionListener(bl);//调用addActionListener方法的是按钮,传入的参数是按钮监听器对象


}

}



此时会出现
[img]
[img]http://dl.iteye.com/upload/attachment/556872/9fef05ec-c32c-38af-ba88-09c1479ad200.jpg[/img]
[/img]


2.
既然按下按钮这个事件可以被监听,那么输入文本框也可以

如果想要得到输入的内容呢?
显然我们需要将得到的内容,传入监听器中。即

ButtonListener bl = new ButtonListener(jt_code,jpf);
///传入参数,重载ButtonListener原有的构造方法


这时候就出现了错误
1.原来的ButtonListener中并没有这个可以传入参数的构造方法。
2.也没有这两个属性。

此时要修改监听器

private javax.swing.JTextField jt;
private javax.swing.JPasswordField jp ;

/**
* 重载构造方法
*/

public ButtonListener (javax.swing.JTextField jt, javax.swing.JPasswordField jp){
this.jt=jt;
this.jp=jp;
}


还没完,得到了以后,我得验证用户名和密码呀。
把原来的actionPerformed 方法修改成如下

只有用户名为张三,密码为123是才显示登录成功 否则就打印用户名或密码错误

/**
* 得到用户名
*/
String code = jt.getText();

/**
* 得到密码
*/
char c[] = jp.getPassword();
/**
* 将字符型数组转换分成字符串
*/
String pw = new String(c);

/**
* 进行验证
*/
if(code.equals("张三")&&pw.equals("123"))
System.out.println("登录成功");
else
System.out.println("用户名或密码错误");


3.有的监听中不止一种抽象方法
比如WindowListener

package jiantingqi;

import java.awt.event.WindowEvent;

public class EventHandle implements java.awt.event.WindowListener {
public void windowActivated(WindowEvent e){
System.out.println("窗口被选中啦!!");

}
public void windowClosed(WindowEvent e){
System.out.println("窗口被!关闭啦!!");
}
public void windowClosing(WindowEvent e){
System.out.println("窗口关闭啦!!");
}
public void windowDeactivated(WindowEvent e){
System.out.println("窗口取消选中啦!!");
}
public void windowIconified(WindowEvent e){
System.out.println("窗口从正常状态最小化!!");
}
public void windowDeiconified(WindowEvent e){
System.out.println("窗口从最小化恢复成正常状态!!");
}
public void windowOpened(WindowEvent e){
System.out.println("窗口打开!!");
}



}

由于接口的继承需要重写其中所有的抽象方法,有些麻烦,那么可以使用到适配器。
那就是另外的问题了。 [/color]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值