How to set SWT button foreground color?

妖精的绣舞 提交于 2019-11-27 09:45:13

On Windows, setForeground for Buttons has no effects.

As a workaround, add a PaintListener to your Button. On this Listener's paintControl method, get the generated event's GC and, with it, re-write the text of your Button using the color you want.

You can, in fact, draw anything over your Button.

If you need Button with style SWT.CHECK you can try use Button without text and add Label element. Example:

chkAutorun = new Button(fCompositeLogin, SWT.CHECK);
Label lblAutorun = new Label(fCompositeLogin, SWT.NONE);
lblAutorun.setForeground(white);
lblAutorun.setText("Autorun");

On windows, setForeground doesn't work for Group either.

If you can convince your users to use the Classic Theme, setForeground will miraculously work.

This is the code to Implement FOreground Color in Buttons in SWT with allowing Mnemonic key to be Shown also and Enabled by Pressing Alt+"Mnemonic Key";

Button radioButton=new Button(parent,SWT.RADIO);
StringBuffer sb = new StringBuffer("I am a Coloured radio button");
String name=null;
 String S = "I am a Coloured radio button";
String substr="C";
int i=S.indexOf(substr);
sb.insert(i,"&");
S=sb.toString();
name=sb.substring(i, i+2);
name=sb.toString();
String whiteSpace=" ";
final String TName=S;

for(int l=0;l<1000;l++)
    whiteSpace=whiteSpace.concat("            ");

radioButton.setText(name+whiteSpace);

radioButton.addPaintListener(new PaintListener(){
 String name=TName;
    @Override
    public void paintControl(PaintEvent e) {
        // TODO Auto-generated method stub
        e.gc.setForeground(hex2Col("ffffcc"));
        int x=21;
        int y=21;
        e.gc.drawText(name, x,y,SWT.DRAW_MNEMONIC | SWT.TRANSPARENT);

    }

});

Note: hex2Col is my own method to Convert hex Color Code to Color Type

Note: Here ALT+C is Mnemonic Key Combination i have Used

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!