0

我有这个简单的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

4

3 回答 3

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;
}
于 2013-03-19T03:35:19.500 回答
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。

于 2013-03-19T11:15:54.607 回答
-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
            });
        }
于 2013-03-19T05:21:48.663 回答