2015-12-03 63 views
1

我試圖通過將更多圖像附加到一個長圖像然後將其添加到每個樹節點來添加swt樹的多個圖標。問題在於隨着圖像寬度的增加,虛線越來越長(請參見圖片)。我試圖添加繪畫監聽器,但我有一些重繪問題,所以繪畫監聽器不適合我。 如果有人有任何建議,請幫助。SWT樹多個圖標

enter image description here

switch (event.type) { 
    case SWT.MeasureItem: { 
     final Object value = ((TreeItem) event.item).getData(); 
     final BrowserNode node = getBrowserNode(value); 
     Image image = getCombinedImage(node.getImage1(),node.getImage2(),node.getImage3(),node.getImage4()); 
     Rectangle rect = image.getBounds(); 
     event.width += rect.width;// rect.width*2; 
     event.height = Math.max(event.height, rect.height + 2); 
     break; 
    } 
    case SWT.PaintItem: { 
     BrowserNode node = getBrowserNode(((TreeItem) event.item).getData()); 
     Image image = getCombinedImage(node.getImage1(),node.getImage2(),node.getImage3(),node.getImage4()); 
     Rectangle rect = image.getBounds(); 
     int offset = Math.max(0, (event.height - rect.height)/2); 
     event.gc.copyArea(event.x, event.y, event.width, event.height, event.x + image.getImageData().width-30, event.y + offset, false); 
     event.gc.fillRectangle(event.x, event.y, image.getImageData().width, event.height); 
     event.gc.drawImage(image, event.x, event.y + offset); 
     break; 
    } 
    } 
+0

我沒有看到圖像左側和右側的圖標之間的差異。你可以發佈一個獨立的片段,產生不需要的虛線嗎? –

+0

垂直虛線和正號之間的空格對於兒童物品來說很大。水平虛線的大小也太大。
我想要自定義: org.eclipse.swt.widgets.Tree 以獲取右側的行爲。 –

+0

但是什麼代碼導致了右側,或者是右側的繪圖程序模擬? –

回答

2

樹節點的過度凹陷是特定於Windows,其他平臺不行爲這種方式。

這個問題是這個錯誤報告中討論: https://bugs.eclipse.org/bugs/show_bug.cgi?id=185004

建議的解決方法是畫自己的樹項目。

+0

非常感謝。我認爲你是對的,但我必須測試它。如果有效,我會在明天標記答案。 –