解決SWT Button設定背景顏色不可用的問題

2021-05-23 00:09:10 字數 1575 閱讀 5204

在做eclipse 的乙個專案時遇到org.eclipse.swt.widgets.button設定背景色,不起作用。

遇到問題後在網上找了好久,終於找到一段修正**,不可直接使用,於是將其更改為如下方法。

本想重寫swt的button類,結果任務在身,遇到問題就放棄了,有能力的可以試試。

或許該方法還可以繼續優化,大家繼續啊。

使用方法:正常使用swt button,只是在設定背景設以後,記得呼叫下面的方法,即可,測試通過。

* just to fix button's backgroundcolor,may be it is on test.

* @param button

private void fixsetbackground(button button) {

color foreground = button.getforeground();

color background = button.getbackground();

int x = 0;

int y = 0;

rectangle rect = button.getbounds();

int width = rect.width;

int height = rect.height;

string text = button.gettext();

if (width == 0)

width = 1;

if (height == 0)

height = 1;

button.setimage(new image(button.getparent().getdisplay(), width,height));

image original = button.getimage();

gc gc = new gc(original);

gc.setforeground(foreground);

gc.setbackground(background);

gc.drawrectangle(x, y, width, height);

gc.fillrectangle(x, y, width, height);

font font = button.getfont();

fontdata fontdata = font.getfontdata()[0];

int fontsize = fontdata.getheight();

gc.setfont(button.getfont());

int ximg = (x + width) / 2 - fontsize * text.length() / 3;

int yimg = (y + height) / 2 - fontsize * 3 / 4;

gc.drawtext(text, ximg < 4 ? ximg : 4, yimg < 4 ? yimg : 4,

swt.draw_transparent | swt.draw_mnemonic);

gc.dispose();

原文:https://bugs.eclipse.org/bugs/show_bug.cgi?id=23837

css背景設定

顏色表示方法 background 1 red 英文單詞 2 ff0000 16進製制 3 rgb 255,0,0 3元色 4 rgb 100 0 0 百分比 背景起始位置 background origin padding box border box content box 邊框起始 內邊距起始...

css背景設定

1 background color 背景顏色 2 background image 背景 3 background repeat 背景重複 4 background position 背景位置 5 background size 背景尺寸 6 background attachment 背景粘附 ...

css背景設定

注 所有的 都在中實現 背景色 background color 顏色 背景 背景大小 background size 平鋪 重複 background repeat no repeat 此行表示不平鋪 背景位置 background position 傳值 x y xy可正可負 傳關鍵字 x ce...