2015-10-16 29 views
2

我已經創建了一個按鈕,在SWT中設置圖像。我想刪除按鈕的邊框。所以它看起來像一個標籤。請幫助任何人。如何刪除SWT按鈕的邊框,使其看起來像一個標籤

下面的代碼片段:

breakNodeButton = new Button(this, SWT.TRANSPARENT); 
breakNodeButton.setBackground(new Color(getDisplay(), 204, 204, 204)); 
Image breakNodeLabelImg = ... 
breakNodeButton.setImage(breakNodeLabelImg); 
+0

顯示您的代碼。 –

+1

您不能刪除邊框。您可以使用「PaintListener」在代碼中完全繪製按鈕。 –

+0

代碼已添加到問題請檢查, –

回答

3

由於Greg建議,您可以使用PaintListener覆蓋按鈕的外觀。

例如:

Button button = new Button(shell, SWT.PUSH); 
button.addPaintListener(new PaintListener() { 
    @Override 
    public void paintControl(PaintEvent event) { 
    event.gc.setBackground(event.display.getSystemColor(SWT.COLOR_GREEN)); 
    event.gc.fillRectangle(event.x, event.y, event.width, event.height); 
    Image image = event.display.getSystemImage(SWT.ICON_QUESTION); 
    event.gc.drawImage(image, 0, 0); 
    } 
}); 

油漆代碼將繪製問號圖像中的綠色背景上的左上角。

請注意,按鈕的computeSize()方法仍會查閱(空白)文本和圖像以計算按鈕的首選大小。由於這可能不是您想要的大小,您應該將按鈕圖像設置爲您在繪製代碼中使用的圖像,或者建議佈局使用預先計算的大小,例如,通過設置適當的GridDataRowData

或者您可以使用一個Label並添加MouseListener模擬一個按鈕的選擇偵聽器。但是,默認情況下,標籤無法通過製表符遍歷獲得鍵盤焦點,因此可能不會成爲Button的完整替代品。

+0

解決了我的目的,謝謝 –

+0

@RahulTripathi如果您覺得答案能夠解決問題,請點擊綠色複選標記將其標記爲「已接受」。這有助於將重點放在仍然沒有答案的舊帖子上。 –

相關問題