论坛首页 Web前端技术论坛

不知道有人用过GWT没有,有几个问题问一下?

浏览 3998 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-10-11  
GWT
1. ScrollPanel有没有办法屏蔽掉水平滚动条?

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. 因为项目的需要,经常要反复的创建/销毁控件,但是这样的话网页上的交互会越来越慢,不知道有人碰到过这种情况没有?怎么解决的?
   发表时间: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掉,或者找个地方放起来?而且基本上一些小的组件创建速度很快,是不是交互会变慢可能性也不大,毕竟组件的创建和销毁在浏览器上。
0 请登录后投票
   发表时间: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,但是现在只能显示不执行隐藏的操作。大侠,帮忙看看是怎么回事?

还有为什么交互会越来越慢,出现这种情况可能是什么原因,能帮我分析一下吗?
0 请登录后投票
   发表时间:2007-10-15  
oh,td(PopPanel)阻止了事件的传播,你重写td的onbrowserEvent方法吧
0 请登录后投票
   发表时间:2007-11-17  
还有为什么交互会越来越慢,出现这种情况可能是什么原因,能帮我分析一下吗?
---- 我猜想是:你的代码的执行顺序和控制有些问题。如:在操作过程中会多次执行addClickListener(不管前次的操作是否已经加上)。还有可能是:类对象之间相互嵌套,导致JavaScript垃圾回收很慢。
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics