2010-12-12 136 views
3

我們有一個Swing應用程序,我們計劃移植到SWT/JFace。 Swing應用程序在樹和表中繪製了很多圖標(javax.swing.Icon實現)(圖標留在文本左側)。如果我理解正確,SWT只能繪製圖片(又名圖形文件)。繪製圖標或整個表格/樹形單元的最簡單方法是什麼?提前致謝。SWT:在表格或樹形單元格中繪製「圖標」

回答

3

圖像可以從圖形文件中加載,也可以在內存中繪製。

Image image = new Image(Display.getCurrent(), width, height); 
GC gc = new GC(image); 

// draw icon using GC 

gc.dispose(); 

至於在表/棵顯示他們來說,最直接的方法是設置在表/樹項目形象:

TableItem item = ... 
item.setImage(theImage); 

還有就是要然而,這種方法的一個顯著的缺點:在Windows上,您第一次在表格項目上設置圖像時,該圖像的高度將成爲表格中所有項目的標準高度。所以如果你設置一個更大的圖像,它將被縮小到第一個圖像的大小。如果你設置一個較小的圖像,它將被放大。

如果您的所有圖片都是相同的大小,這不會是一個問題。

但是,如果您無法預先預測圖像的大小,我建議使用custom draw API來渲染您的表格/樹項目。這種方法肯定是更加密集的,但可以對結果進行細化控制。

+0

謝謝。有沒有一個地方可以在繪製節點之前立即按需設置圖像? – Mot 2010-12-16 06:54:42

+1

您可以使用SWT.VIRTUAL表並使用SWT.SetData偵聽器根據需要設置圖像和文本。 – qualidafial 2010-12-16 20:46:58