帮我看一下为何swing的JButton鼠标事件与JButton的setEnabled有这样情况?

jackwin 2008-07-09 04:21:42
button = new JButton("开始数据转换");
button.setEnabled(false);
button.addMouseListener(new MouseAdapter() {
public void mouseClicked(final MouseEvent arg0) {
if(!button.isEnabled())
return;
SetActionLable("开始数gggg据转换");
}
});


我用button.setEnabled(false);把BUTTON禁用,但我运行程序时BUTTON的确是变灰了,但鼠标的的mouseClicked事件依然是产生的,我只能多加一句if(!button.isEnabled()) return;来限定了,是什么原因呢?BUTTON禁用后应该至少mouseClicked不响应才对的啊?谢了
...全文
486 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackwin 2008-07-09
  • 打赏
  • 举报
回复
谢了
dracularking 2008-07-09
  • 打赏
  • 举报
回复
button.removeMouseListener(button.getMouseListeners()[1]);
zwgs1985 2008-07-09
  • 打赏
  • 举报
回复
禁用了动作,没有禁用事件,下面代码你运行以下看看就清楚了

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JFrame;

public class SimpleTest {

/**
* @param args
*/
public static void main(String[] args) {
JFrame frame = new JFrame();
JButton button = new JButton("Test");
button.setEnabled(false);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("actionPerformed");
}
});
button.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
System.out.println("mousePressed");
}
});
frame.getContentPane().add(button);
frame.setVisible(true);
frame.setSize(200, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
365810247 2008-07-09
  • 打赏
  • 举报
回复
java API:

public void setEnabled(boolean enabled)
设置是否启用此组件。
已启用的组件可以响应用户输入,而未启用的组件则无法响应用户输入。
可以在禁用某些组件时更改其可视化表现形式,以向用户提供反馈,说明其无法接受输入。

62,614

社区成员

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

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