小方的Java博客

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  27 随笔 :: 17 文章 :: 115 评论 :: 0 Trackbacks
GWT QQ 群号:28310588

用过gwt的都知道,对一个按钮button做点击事件很简单,但要做鼠标事件,比如over,up,leave就没办法了,但extends Button就能做到,以下就是这个例子:我自己写的

package mypack.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.ClickListenerCollection;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.LoadListener;
import com.google.gwt.user.client.ui.LoadListenerCollection;
import com.google.gwt.user.client.ui.MouseListener;
import com.google.gwt.user.client.ui.MouseListenerCollection;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.SourcesClickEvents;
import com.google.gwt.user.client.ui.SourcesLoadEvents;
import com.google.gwt.user.client.ui.SourcesMouseEvents;
import com.google.gwt.user.client.ui.Widget;

/**
 * Entry point classes define <code>onModuleLoad()</code>.
 
*/

public class MouseTest implements EntryPoint {

    
/**
     * This is the entry point method.
     
*/

    
public void onModuleLoad() {
        
final MyButton button = new MyButton("Super Button");
        
final Label label = new Label();

        button.addMouseListener(
new MouseListener() {

            
public void onMouseDown(Widget sender, int x, int y) {
                
// TODO Auto-generated method stub

            }


            
public void onMouseEnter(Widget sender) {
                
// TODO Auto-generated method stub

            }


            
public void onMouseLeave(Widget sender) {
                
// TODO Auto-generated method stub

            }


            
public void onMouseMove(Widget sender, int x, int y) {
                label.setText(
"Hello World!");

            }


            
public void onMouseUp(Widget sender, int x, int y) {

            }

        }
);

        
// Assume that the host HTML has elements defined whose
        
// IDs are "slot1", "slot2". In a real app, you probably would not want
        
// to hard-code IDs. Instead, you could, for example, search for all
        
// elements with a particular CSS class and replace them with widgets.
        
//
        RootPanel.get("slot1").add(button);
        RootPanel.get(
"slot2").add(label);
    }

}


class MyButton extends Button implements SourcesClickEvents,
        SourcesMouseEvents, SourcesLoadEvents 
{
    
public MyButton(String text){
        
super(text);
        sinkEvents(Event.ONCLICK 
| Event.MOUSEEVENTS | Event.ONLOAD | Event.ONERROR);
    }

    
    
private ClickListenerCollection clickListeners;

    
private LoadListenerCollection loadListeners;

    
private MouseListenerCollection mouseListeners;

    
public void addClickListener(ClickListener listener) {
        
if (clickListeners == null)
            clickListeners 
= new ClickListenerCollection();
        clickListeners.add(listener);
    }


    
public void addLoadListener(LoadListener listener) {
        
if (loadListeners == null)
            loadListeners 
= new LoadListenerCollection();
        loadListeners.add(listener);
    }


    
public void addMouseListener(MouseListener listener) {
        
if (mouseListeners == null)
            mouseListeners 
= new MouseListenerCollection();
        mouseListeners.add(listener);
    }


    
public void onBrowserEvent(Event event) {
        
switch (DOM.eventGetType(event)) {
        
case Event.ONCLICK: {
            
if (clickListeners != null)
                clickListeners.fireClick(
this);
            
break;
        }

        
case Event.ONMOUSEDOWN:
        
case Event.ONMOUSEUP:
        
case Event.ONMOUSEMOVE:
        
case Event.ONMOUSEOVER:
        
case Event.ONMOUSEOUT: {
            
if (mouseListeners != null)
                mouseListeners.fireMouseEvent(
this, event);
            
break;
        }

        
case Event.ONLOAD: {
            
if (loadListeners != null)
                loadListeners.fireLoad(
this);
            
break;
        }

        
case Event.ONERROR: {
            
if (loadListeners != null)
                loadListeners.fireError(
this);
            
break;
        }

        }

    }


    
public void removeClickListener(ClickListener listener) {
        
if (clickListeners != null)
            clickListeners.remove(listener);
    }


    
public void removeLoadListener(LoadListener listener) {
        
if (loadListeners != null)
            loadListeners.remove(listener);
    }


    
public void removeMouseListener(MouseListener listener) {
        
if (mouseListeners != null)
            mouseListeners.remove(listener);
    }

}


posted on 2006-08-02 10:15 方佳玮 阅读(1689) 评论(2)  编辑  收藏 所属分类: AJAX

评论

# re: [ajax]GWT做的鼠标over事件 2006-08-03 17:53 peace
不错啊,小伙子!如果再加上点注释就好了  回复  更多评论
  

# re: [ajax]GWT做的鼠标over事件 2006-09-25 10:23 麻辣
嘿嘿,不错..  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: