站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题panel监听鼠标事件问题?

panel监听鼠标事件问题?

摘要: panel监听鼠标事件问题?


在一个panel里面放上很多panel的时候,外围的监听不到鼠标事件!
请问如果解决?


up


没人用J2SE吗?


在里面的panel上把事件仍给上容器,就可以监听到的


用静态的布尔型变量判断面板是里还是外,然后分别加监听



确实,里层的控件会覆盖外层的控件所监听的事件,所以如果期望事件能够被外层容器所捕获,那么必须在内层控件中监听并在捕获事件后将其向外抛出。

for example:

private MouseMotionListener mml = new MouseMotionListener() {

public void mouseMoved(MouseEvent e) {
Component c = e.getComponent();

if (IsInnerPanel(c)) {
// throw out event
e.translatePoint(c.getX(), c.getY());
}
else if (IsOutterPanel(c)) {
// do something u want...
}
}

// ... other methods
}

这里,如果判断出是内层PANEL捕获了事件(无论多深),就向上一层抛出此事件,c.getX() and c.getY(),是给出内层控件当前鼠标的坐标相对于外层控件的鼠标控件位置,这里仅仅假设了两层,事实上可以有无数层,且判断哪一层处理的逻辑也是可以相应作出调整。
@.@||~


程序上是可以做自己想做的功能,但是性能上差了很多!
比如一个大面板里面有几百个小面板,鼠标显得很迟钝!


首先,我不是很清楚你为什么会在一个大面板里出现几百个小面板,是不是可以用其他设计方案代替?
其次,我曾经有过这样的经历,确实会降低鼠标的响应速度,但是我的系统层层嵌套了3层PANEL,而事件发生在最外层,且每一层都包含很多的PANEL(总共大概6、70个),鼠标的响应事件还没有太离谱,你可以测试一下性能瓶颈可能出现的点,再确定解决方案
@.@||~


比如连连看


up


构件实体对象。
内层的每个Panel都看作一个对象,该对象内除了属性外增加一个监听方法监听鼠标。




每一个对象加一个监听,我就是这样做的,对象太多,性能太差


up!

mark!


呵呵,如果JAVA可以用WINDOWS API问题就好办了!!!


up


↑返回目录
前一篇: 急!!!JAVA中怎么获取LINUX的环境变量?
后一篇: 初学JAVA,在看一个项目,却找不着数据库链接的代码在哪里,这请这东西一般是放在什么地方啊?