java GUI编程之监听操作实例分析
本文实例讲述了javaGUI编程之监听操作。分享给大家供大家参考,具体如下:
当点击Frame中的component组件时,会产生相应的效果,但是相应的其必须进行监听,确定是那个对象,那种操作,但是如果用cup进行主动的监听就会消耗大量的资源,所以有了被动的监听,即对应的事件发生后会自动的执行相关的代码。
Button监听:
instance1:
importjava.awt.*;
importjava.awt.event.*;
publicclassMoniterStart{
publicstaticvoidmain(String[]args){
Framef=newFrame();
Buttonb=newButton("Press");
f.add(b,BorderLayout.CENTER);
MyMonitorbh=newMyMonitor();
b.addActionListener(bh);
f.setBounds(100,100,300,300);
f.setVisible(true);
}
}
classMyMonitorimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
System.out.println("aAH");
}
}
进行被动监听是你必须确定是什么地方什么类型的componet发出的,我们不可能提供所有的信息,所以我们初建了一个事件对应一个对象,其都实现了一个接口,当事件发生时,就会调用对应的事件方法。即(implementsActionListener),而对应的当实现方法是就要求其提供事件动作。
instance2:
importjava.awt.*;
importjava.awt.event.*;
publicclassMonitor2{
publicstaticvoidmain(String[]args){
Framef1=newFrame();
Buttonb1=newButton("Start");
Buttonb2=newButton("Stop");
b1.setActionCommand("TheEnd");
f1.add(b1,BorderLayout.CENTER);
f1.add(b2,BorderLayout.SOUTH);
MyMonitor1bh=newMyMonitor1();
b1.addActionListener(bh);
b2.addActionListener(bh);
f1.setBounds(100,100,300,300);
f1.setVisible(true);
}
}
classMyMonitor1implementsActionListener{
publicvoidactionPerformed(ActionEvente){
System.out.println("aAHyougetit"+e.getActionCommand());
}
}
注:当一个监听器监听多个button对象时,我们可以用setActionCommand进行区别,这个相当于是一个属性亦或是一种标记。
TextField(文本输入监听)
instance3;
importjava.awt.*;
importjava.awt.event.*;
publicclassTfMonitor{
publicstaticvoidmain(String[]args){
newTFFrame();
}
}
classTFFrame{
TFFrame(){
Framef=newFrame("TF");
TextFieldtf=newTextField();
f.add(tf);
tf.addActionListener(newTFFrameMonitor());
f.setBounds(100,100,300,300);
f.setVisible(true);
}
}
/*
classTFFrameextendsFrame{
TFFrame(){
//Framef=newFrame("TF");
TextFieldtf=newTextField();
add(tf);
tf.addActionListener(newTFFrameMonitor());
//f.setBounds(100,100,300,300);
setBounds(100,100,300,300);
setVisible(true);
}
}
*/
classTFFrameMonitorimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
TextFieldtext=(TextField)e.getSource();
System.out.println(text.getText());
//text.setText(null);
}
}
TextField属于一种输入文本类的组件,对于Frame类其一种可以直接用Frame构造方法构造,直接产生一个Frame的对象,另一种可以直接继承Frame这样就相当于已经存在了一个Frame类,可以直接使用Frame里面的方法。
注:其上面的setText(null)是相当于在输入结束按回车键的时候,会自动的把输入框里的数据清空。如果没有,其还会继续存在。
instance4:
importjava.awt.Frame;
importjava.awt.TextField;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
publicclassTFFrame2Monitor{
publicstaticvoidmain(String[]args){
newTFFrame2();
}
}
classTFFrame2extendsFrame{
TFFrame2(){
TextFieldtf=newTextField();
add(tf);
tf.addActionListener(newTFFrameMonitor2());
tf.setEchoChar('*');
setBounds(100,100,300,300);
setVisible(true);
}
}
classTFFrameMonitor2implementsActionListener{
publicvoidactionPerformed(ActionEvente){
TextFieldtext=(TextField)e.getSource();
System.out.println(text.getText());
text.setText(null);
}
}
仅仅是对TextFiled对象添加了一个setEchoChar,表示输入后的表面显示。如果没有,即为输入什么就显示什么,如果添加了就和输密码一样被覆盖了。
更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。