浏览 3998 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-10-11
2. HTML的鼠标事件onMouseLeave不执行,谁知道是怎么回事? 我看了MouseListenerCollection的代码 case Event.ONMOUSEOUT: // Only fire the mouseLeave event if it 's actually leaving this // widget. Element to = DOM.eventGetToElement(event); if (!DOM.isOrHasChild(senderElem, to)) { fireMouseLeave(sender); } break; 这里为什么不直接fireMouseLeave,要判断什么? 3. 因为项目的需要,经常要反复的创建/销毁控件,但是这样的话网页上的交互会越来越慢,不知道有人碰到过这种情况没有?怎么解决的? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-10-11
1. ScrollPanel有没有办法屏蔽掉水平滚动条?
/*******下面是它的实现代码************/ public ScrollPanel() { setAlwaysShowScrollBars(false); sinkEvents(Event.ONSCROLL); } ...... public void setAlwaysShowScrollBars(boolean alwaysShow) { DOM.setStyleAttribute(getElement(), "overflow", alwaysShow ? "scroll" : "auto"); } 通过分析可知,它的样式设定style="overflow:scroll",那么该设置就是水平垂直都可以滚动的。看了一下他的api,没有关于限制垂直或者水平滚动的方法。那么可以在外部直接调用DOM的方法,如下: ScrollPanel sp=new ScrollPanel(); DOM.setStyleAttribute(sp.getElement(), "overflow-y", alwaysShow ? "scroll" : "auto"); //将overflow换成overflow-y即可 /*******************/ 2. HTML的鼠标事件onMouseLeave不执行,谁知道是怎么回事? 这和MouseListenerCollection没有关系 DOM.isOrHasChild(senderElem, to)) //Determine whether one element is equal to, or the child of, another 可能是你的添加的mouselistener有问题 3. 因为项目的需要,经常要反复的创建/销毁控件,但是这样的话网页上的交互会越来越慢,不知道有人碰到过这种情况没有?怎么解决的? 经常要反复的创建/销毁控件?为什么不把不用的组件hidden掉,或者找个地方放起来?而且基本上一些小的组件创建速度很快,是不是交互会变慢可能性也不大,毕竟组件的创建和销毁在浏览器上。 |
|
返回顶楼 | |
发表时间:2007-10-12
多谢楼上的大侠的帮助。
temp.addMouseListener(new MouseListener(){ public void onMouseDown(Widget arg0, int arg1, int arg2) { // TODO Auto-generated method stub } public void onMouseEnter(Widget sender) { // TODO Auto-generated method stub } public void onMouseLeave(Widget arg0) { // TODO Auto-generated method stub td.hide(); } public void onMouseMove(Widget sender, int arg1, int arg2) { // TODO Auto-generated method stub int x = sender.getAbsoluteLeft(); int y = sender.getAbsoluteTop() + 15; td.setPopupPosition(x, y); td.show(); } public void onMouseUp(Widget arg0, int arg1, int arg2) { // TODO Auto-generated method stub }}); temp是一个HTML,td是一个PopPanel。我想要完成的功能就是当鼠标移到HTML上时显示td,移出HTML时,隐藏td,但是现在只能显示不执行隐藏的操作。大侠,帮忙看看是怎么回事? 还有为什么交互会越来越慢,出现这种情况可能是什么原因,能帮我分析一下吗? |
|
返回顶楼 | |
发表时间:2007-10-15
oh,td(PopPanel)阻止了事件的传播,你重写td的onbrowserEvent方法吧
|
|
返回顶楼 | |
发表时间:2007-11-17
还有为什么交互会越来越慢,出现这种情况可能是什么原因,能帮我分析一下吗?
---- 我猜想是:你的代码的执行顺序和控制有些问题。如:在操作过程中会多次执行addClickListener(不管前次的操作是否已经加上)。还有可能是:类对象之间相互嵌套,导致JavaScript垃圾回收很慢。 |
|
返回顶楼 | |