2012-07-20 69 views
2

好了,所以我有形象創造這樣的:添加鼠標監聽到Java SWT圖像

Image deleteImage = new Image(viewer.getTable().getDisplay(), 
         Provider.PATH_TO_DELETE_ICON); 

如何添加鼠標偵聽器,所以我知道被點擊圖像時?

這裏是我的標籤供應商類:

private class MyLabelProvider extends LabelProvider implements 
      ITableLabelProvider { 

     @Override 
     public Image getColumnImage(Object element, int columnIndex) { 
      if (columnIndex == 3) { 
       Image deleteImage = new Image(viewer.getTable().getDisplay(), 
         Provider.PATH_TO_DELETE_ICON); 
       return deleteImage; 
      } 
      if (columnIndex == 4) { 
       Image editImage = new Image(viewer.getTable().getDisplay(), 
         Provider.PATH_TO_EDIT_ICON); 
       return editImage; 
      } else 
       return null; 
     } 

     public String getColumnText(Object element, int index) { 
      Provider provider = (Provider) element; 
      switch (index) { 
      case 0: 
       return Integer.toString(provider.getId()); 
      case 1: 
       return provider.getName(); 
      case 2: 
       return provider.getBulstat(); 
      default: 
       return ""; 
      } 
     } 

    } 

回答

6

您可以創建一個Label,通過

label.setImage(deleteImage) 

設置你的圖像到它之後,你可以做到以下幾點:

label.addMouseListener(new MouseListener() { 

     @Override 
     public void mouseUp(MouseEvent arg0) { 
      System.out.println("Click"); 
     } 

     @Override 
     public void mouseDown(MouseEvent arg0) { 

     } 

     @Override 
     public void mouseDoubleClick(MouseEvent arg0) { 
     } 
    }); 
+0

這將是解決方案,但它需要是一個圖像,因爲我從查看器的LabelProvider獲取它。如果你能告訴我一個LabelProvider的getImage方法如何返回一個Button而不是一個可能是解決方案的圖像。 – dsthetics 2012-07-20 13:04:52

+0

創建您自己的'LabelProvider'並覆蓋'getImage()'方法?只是猜測,還沒有使用'LabelProvider'。剛剛意識到,如果你改變返回類型,你不能重寫一個方法......然後我不知道該怎麼做。 – Baz 2012-07-20 13:06:24

+0

是啊,不能像這樣覆蓋它... – dsthetics 2012-07-20 13:13:38