加到按钮上的事件死活不执行

duqingming 2010-08-27 04:22:59
我做一个继承自JPanel的类,在这个类里有加了一个方法,代码如下:
public JButton getEMainBtn() {
if (emailBtn == null) {
// Create an action to add to the Context Menu
final MouseListener action = new MouseListener() {

public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
// 双击
} else if (e.getClickCount() == 1) {
// 单击
}
}

public void mousePressed(MouseEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}

public void mouseReleased(MouseEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}

public void mouseEntered(MouseEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}

public void mouseExited(MouseEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
};
emailBtn = new JButton();
emailBtn.setOpaque(false); // 设置组件透明
emailBtn.setBorder(null);
emailBtn.setIcon(SparkRes.getImageIcon(SparkRes.MAIL_16x16));
emailBtn.addMouseListener(action);
}
return emailBtn;
}
其实也很简单,这个方法就是返回一个按钮,这个方法是在继承自JPanel的那个类的构造函数里执行的。

add(getEMainBtn(), new GridBagConstraints(index++, 0, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 5, 0, 0), 0, 0));

现在的问题是这个按钮是显示出来了,但当用户鼠标点击的时候按钮的事件却没有执行。

那位大侠遇到过这个问题的请指教指教。

...全文
266 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
sky123123 2010-08-30
  • 打赏
  • 举报
回复
throw new UnsupportedOperationException("Not supported yet.");
阻止咯程序的继续执行。。。
t2xingzhe 2010-08-30
  • 打赏
  • 举报
回复
gui不懂,围观
nj_dobetter 2010-08-30
  • 打赏
  • 举报
回复
button的点击处理一般放在ActionListener里面处理
gentalguo 2010-08-30
  • 打赏
  • 举报
回复
请你给出一个你的相对较为完整的些的可运行的代码出来看吧。
每一个细节都可能出现问题,也许你没有给出的部分会有什么问题,而一个很细小的问题,足够影响一切了。
duqingming 2010-08-30
  • 打赏
  • 举报
回复
JList 控件里可以添加按钮吗?我觉得是不是因为这个控件不能添加按钮的原因呀?
healer_kx 2010-08-30
  • 打赏
  • 举报
回复
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
magong 2010-08-27
  • 打赏
  • 举报
回复
我测试的,一个控件放两个Listener,一个有前述问题,另一个肯定受影响,不管注册次序先后。
容器中有前述问题的,对其中控件不产生影响。

看来你的首要问题是查为什么有两个Listener。
Inhibitory 2010-08-27
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 duqingming 的回复:]

引用 9 楼 inhibitory 的回复:

JList的CellRenderer和CellEditor的鼠标事件处理是不一样的。
你这样加得自己去实现CellRender和CellEditor,然后分别处理里面的事件。


能不能说的明白一点呀?
[/Quote]
这一块的内容不是能简单说明白的,得自己去看书,而且要深入的看才能明白。
duqingming 2010-08-27
  • 打赏
  • 举报
回复
我觉得这和 JList 是不是有很大的关系。
huntor 2010-08-27
  • 打赏
  • 举报
回复
第一:把 new MouseListener 改成 new MouseAdapter 然后把那些 Unsupport之类的全部删掉,只留下
mouseClicked就可以了。

第二:你说的点击没反应指的是单击、双击还是都没反应。
duqingming 2010-08-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 inhibitory 的回复:]

JList的CellRenderer和CellEditor的鼠标事件处理是不一样的。
你这样加得自己去实现CellRender和CellEditor,然后分别处理里面的事件。
[/Quote]

能不能说的明白一点呀?
qianyecq 2010-08-27
  • 打赏
  • 举报
回复
笨方法alert("test");一步一步检查,看执行到哪里了
duqingming 2010-08-27
  • 打赏
  • 举报
回复
我在debug的时候用 btn.getMouseListeners() 取到这个按钮,发现按钮上有两个 MouseListener,是不是外面一个MouseListener影响了我的MouseListener的执行?
Inhibitory 2010-08-27
  • 打赏
  • 举报
回复
JList的CellRenderer和CellEditor的鼠标事件处理是不一样的。
你这样加得自己去实现CellRender和CellEditor,然后分别处理里面的事件。
goldyellow34 2010-08-27
  • 打赏
  • 举报
回复
你这个button有没有addActionListener啊???
healer_kx 2010-08-27
  • 打赏
  • 举报
回复
那你给的代码不够多了,我把你的button加到一个JFrame上是没有问题的。
duqingming 2010-08-27
  • 打赏
  • 举报
回复
去掉了也不管用呀,是不是有其他问题导致了事件的不执行。

这个按钮是加到 JPanel上去了,后来这个JPanel又被加一个 JList上去了,嵌了好几套,而且JList上也加了MouseListener事件。
crazylaa 2010-08-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 healer_kx 的回复:]

没有问题,把那些throw new UnsupportedOperationException("Not supported yet.");去掉。

它们可能阻止了Event的传递。
[/Quote]+1
healer_kx 2010-08-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 duqingming 的回复:]

自己顶一下,难道没有人遇到过这样的问题吗?
[/Quote]

我去掉了那些throw,就OK了。~
healer_kx 2010-08-27
  • 打赏
  • 举报
回复
没有问题,把那些throw new UnsupportedOperationException("Not supported yet.");去掉。

它们可能阻止了Event的传递。
加载更多回复(1)
安装.NET Framework失败后上网找的卸载工具,亲测卸载后可以完成安装.NET Framework。 一下位介绍: ====================== 分享可以完美卸载.NET Framework 1.0~4.5的framework卸载工具。.NET Framework几乎是系统比不可少的运行组件,特别是现在越来越多的软件都需要.NET Framework运行库的支持。例如本站给大家分享的coreldraw x6安装程序,就必须要.NET Framework 3.5、.NET Fra...... yinshu 分享可以完美卸载.NET Framework 1.0~4.5的framework卸载工具。.NET Framework几乎是系统比不可少的运行组件,特别是现在越来越多的软件都需要.NET Framework运行库的支持。例如本站给大家分享的coreldraw x6安装程序,就必须要.NET Framework 3.5、.NET Framework 4.0运行库的支持才可以安装及运行。 但最近有一台电脑,.NET Framework 4.0死活安装不上(可能是以前不完整安装造成的),想把Framework卸载了重新安装,结果系统自带的卸载工具还卸载不了,甚是头疼,后来找到这款专业的.net framework卸载工具:cleanup_tool才终于把net framework请出电脑,然后再次安装.NET Framework 4.0成功。 NET Framework卸载工具 .NET Framework Cleanup Tool软件简介 .NET Framework Cleanup Tool是一个专用于卸载、清除掉计算机中不同版本.NET框架的免费小软件。支持所有语言的.NET。它能删除与.NET相关的文件,并且还能自动将对应的文件夹、注册表项目和Windows Installer文件全部删除。 使用.NET Framework Cleanup Tool,基本可以将电脑还原到未安装.NET框架时的状态。因此,当你发现.NET不能正常更新,或是无法删除、甚至于重新安装不起作用时,试试这个小软件。 如何卸载framework cleanup_tool支持.NET Framework 1.0~4.5卸载,虽然是英文版的,不过使用简单,只要运行后选择你需要清除的.net framework版本(或者选择卸载全部.NET Framework版本),然后点击“cleanup now”按钮即可开始执行清除作业,过程会持续一到两分钟即可完成framework卸载。 特别注意:net framework框架并不是无用的东西,现在很多程序都需要net framework环境才能运行,所以建议你只有当.NET Framework损坏或者安装不上新版本时才考虑卸载重装。

62,634

社区成员

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

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