更新时间:2019-09-11 10:20:57 来源:极悦 浏览2235次
今天讲一下JavaGUI中的事件处理。
图形用户界面系统借助事件驱动模式处理所有用户交互。用户执行一个操作,如移动鼠标,单击鼠标按钮,按下键盘上的某个键,释放键盘键等。所有这些操作都将生成某种类型的事件。在Java中,每一个执行的操作都是一个事件。
处理这些事件的方式取决于应用程序的类型。一些事件由“抽象窗口操作工具包(AWT)”或者执行这些应用程序的环境来处理。如浏览器或者Applet小程序。有一些事件需要调用此处理程序。
监听器
事件处理模型是一个过程,即应用程序允许使用称为监听器的对象注册到处理程序的过程。当发生适当的事件时,将自动通知这些注册过监听器,某个动作被触发了。
事件监听程序即监听器监听由对象发生的特定事件。这个过程将依次调用处理事件的方法,即事件处理程序。每一个事件监听程序将提供了处理这些事件的方法。
简单来说,监听器是个接口,如果你想监听组件的某一动作,比如鼠标点击,按钮按下这些事件,你就要实现鼠标监听器,或者按钮监听器等这样的接口,然后再把这个实现了接口的对象注册到要监听的组件上。
对按钮事件的处理
只要鼠标在某个按钮上单击,就会生成一个事件。
看下面的例子
Buttonbutton=newButton("确定");
button.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
JOptionPane.showMessageDialog(null,"你点击了按钮");
}
});
Button是确定按钮,我们调用Button的addActionListener方法给它添加了一个点击事件监听器。
AddActionListener方法接受一个参数,这个参数是一个ActionListener对象。由于ActionListener是个接口,因为要实现这个接口的类作为参数。ActionListener接口只有一个方法需要实现,actionPerformed(ActionEvente)这个方法将在按钮按下的时候发生。将传递一个事件对象ActionEvent。
我们在这里用到了匿名类的写法,即不使用对象引用,直接实例化一个类对象来实现ActionListener接口。一般实现事件处理用匿名类比较方便,大家可以熟悉一下这样的写法。
以上的代码等同于:
Buttonbutton=newButton("确定");
MyActionListeneral=newMyActionListener();
button.addActionListener(al);
classMyActionListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
JOptionPane.showMessageDialog(null,"你点击了按钮");
}
}
鼠标事件
Java语言支持用户通过鼠标与应用程序进行交互。程序可以检测鼠标并对鼠标操作中发生的变化作出反应。。鼠标事件通过MouseListener接口处理,并通过如下方法对事件反应。
mouseClicked:点击事件,当点击和释放鼠标按钮时处理此事件。
mouseEntered:当鼠标进入一个组件时处理此事件。
mouseExitied:当鼠标离开组件时处理此事件。
mousePressed:当鼠标按下时处理此事件。
mouseReleased:当鼠标释放时处理此事件。
例子,我们来写个程序,当鼠标进入窗体时提示鼠标进入,离开时提示鼠标离开
publicclassMouseEventDemoextendsFrameimplementsMouseListener{
privatePanelpanel=newPanel();
privateLabellabel;
publicMouseEventDemo(){
setBounds(100,100,300,300);
add(panel);
label=newLabel("Newlabel");
panel.add(label);
panel.addMouseListener(this);
}
privatestaticfinallongserialVersionUID=5563848995118514763L;
@Override
publicvoidmouseClicked(MouseEvente){
label.setText("你点击了鼠标");
}
@Override
publicvoidmousePressed(MouseEvente){
label.setText("你按下了鼠标");
}
@Override
publicvoidmouseReleased(MouseEvente){
label.setText("你释放了鼠标键");
}
@Override
publicvoidmouseEntered(MouseEvente){
label.setText("鼠标进入");
}
@Override
publicvoidmouseExited(MouseEvente){
label.setText("鼠标退出");
}
publicstaticvoidmain(String[]args){
MouseEventDemodemo=newMouseEventDemo();
demo.setVisible(true);
}
}
总结:
要理解AWT对于事件处理的机制
掌握常见的事件处理类
熟悉匿名类的写法
以上就是动力极悦注册机构小编介绍的“Java零基础入门编程:GUI事件处理”的内容,希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为你服务。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习