GWT如何在我的arrayList中创建一个clickhandler

时间:2013-03-19 02:03:44

标签: java gwt

我有这个简单的ArrayList

Image img = new Image("/Mobile 005.JPG");
Image img1 = new Image("/Mobile 006.JPG");
Image img2 = new Image("/Mobile 007.JPG");
Image img3 = new Image("/Mobile 008.JPG");
imgList.add(img);
imgList.add(img1);
imgList.add(img2);
imgList.add(img3);

HorizontPanel hpnl = new HorizontalPanel();
hpnl.add(imgList);

此图像列表将来自db,可以是任意数量。

目前这个HorizontalPanel包含4张图片(将来可能会包含400张图片),现在,如果有用户来点击第二张图片,我们怎么知道哪张图片被点击了用户?

我在哪里以及如何放置clickHandler

3 个答案:

答案 0 :(得分:2)

您将通过使用getSource()API作为 -

来了解单击的图像
Image img = new Image("/Mobile 005.JPG");
img.addClickHandler( getClickHandler() ); 
Image img1 = new Image("/Mobile 006.JPG");
img1.addClickHandler( getClickHandler() ); 
Image img2 = new Image("/Mobile 007.JPG");
img2.addClickHandler( getClickHandler() ); 
Image img3 = new Image("/Mobile 008.JPG");
img3.addClickHandler( getClickHandler() ); 
imgList.add(img);
imgList.add(img1);
imgList.add(img2);
imgList.add(img3);

HorizontPanel hpnl = new HorizontalPanel();
hpnl.add(imgList);

ClickHandler imageClickHandler;

private ClickHandler getClickHandler()
{ 
     if( imageClickHandler != null)
     {
          return imageClickHandler;
     }
     imageClickHandler = new ClickHandler()
     {
            public void onClick( ClickEvent event )
            {
              Image source = (Image)event.getSource();
                  // This is the source that has caused the event.
            }
     };

     return imageClickHandler;
}

答案 1 :(得分:0)

你也可以尝试跟随。

    HorizontalPanel hp = new HorizontalPanel();
    hp.add(getImage("/Mobile 005.JPG"));
    hp.add(getImage("/Mobile 006.JPG"));
    hp.add(getImage("/Mobile 007.JPG"));
    hp.add(getImage("/Mobile 008.JPG"));

    private Image getImage(String imagePath){
    Image image = new Image(imagePath);
    image.addClickHandler(new ClickHandler() {

     @Override
     public void onClick(ClickEvent event) {
       // write the on click code.
     }
     });

}

从imagepath变量中,您可以了解调用哪个onclick。

答案 2 :(得分:-3)

正在寻找类似的东西

List<Image> images = new ArrayList<Image>();
        images.add(new Image());
        images.add(new Image());//Into this list add your DB images list
        images.add(new Image());

        for (Image image : images) {
            image.addClickHandler(
           //singleton instance of clickhandler
            });
        }