mouseEventHandler不灵敏??为什么会忽略点击JButton的事件?

sean717 2003-06-11 06:39:20
写一个小程序,一个计算器,继承JFrame.界面上有16个JButton,分别代表0--9和+-*/,
功能很简单,按一个数字Button,在textarea上显示这个数字...,我用的是一个inner class mouseEventHandler来处理鼠标点击事件(代码见后)

有时不停的按按钮(不是很快,一秒一次),好像mouseEventHandler不能"捕捉"到每一次鼠标点击,会漏掉几个...这是为什么??

简略的代码:

mouseEventHandler handler=new mouseEventHandler();

//new Buttons,给每一个button加上mouseEventHandler
for(int i=0;i<captions.length;++i)
{
buttons[i]=new JButton(captions[i]);
buttons[i].addMouseListener(handler);
buttonPanel.add(buttons[i]);
}

//inner class的声明:
private class mouseEventHandler extends MouseAdapter
{
public void mouseClicked(MouseEvent event)
{
System.out.println("MouseCLICKED!!"+in);
}
}
...全文
143 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
teva 2003-06-13
  • 打赏
  • 举报
回复
to sean717(翔)
晕啊,真的用ActionListener就没有问题了,为什么MouseAdapter就不行?????

MouseAdapter是对于Mouse事件的一个监听器的实现,为了方便用户在实现
MouseListener的时候写所有方法
ActionListener实际上是只有一个方法的就是ActionPerform,这个如果你看一下设计模式中的Adapter和订阅会明白更多一些
eci0 2003-06-13
  • 打赏
  • 举报
回复
都可以,我试过了
package keystoregui;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;


class tmp extends JFrame
{JButton[] buttons;
static int in;
public tmp(){





mouseEventHandler handler=new mouseEventHandler();
String[] captions={
"1","2","3","4"
};
JPanel buttonPanel;
buttonPanel=new JPanel();
this.getContentPane() .add(buttonPanel);
for(int i=1;i<captions.length;i++)
{

JButton buttons=new JButton(captions[i]);
buttons.addMouseListener(handler);
buttonPanel.add(buttons);
}
this.show() ;
pack();
}
private class mouseEventHandler extends MouseAdapter
{
public void mouseClicked(MouseEvent event)
{
System.out.println("MouseCLICKED!!"+in);
in++;
}
}
//

public static void main(String[] args) throws HeadlessException {
tmp test1 = new tmp();
}
}
//
teva 2003-06-13
  • 打赏
  • 举报
回复
我试了一下,多块都可以的 。

不过按钮只需要实现ActionPerform就可以了 ,这个样子要好很多。
sean717 2003-06-13
  • 打赏
  • 举报
回复
晕啊,真的用ActionListener就没有问题了,为什么MouseAdapter就不行?????
hlding 2003-06-11
  • 打赏
  • 举报
回复
按钮上的事件处理就是用addActionListener(),不过你可以通过自己重新写一个监听器的
yuanmeng163 2003-06-11
  • 打赏
  • 举报
回复
试一下这个:
mouseEventHandler handler=new mouseEventHandler();

for(int i=0;i<captions.length;++i)
{
buttons[i]=new JButton(captions[i]);
buttons[i].addActionListener(handler);
buttonPanel.add(buttons[i]);
}

private class mouseEventHandler implements ActionListener
{
public void actionPerformed(ActionEvent e) {
System.out.println("MouseCLICKED!!"+in);
}
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧