Reputation: 7875
The SWT Button class has a setForeground(Color)
method but it seems to have no effect (the method is actually on Button's superclass). The javadoc says that this method is a hint and may be overridden by the platform. My platform is Windows.
Upvotes: 4
Views: 9068
Reputation: 11
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
Upvotes: 0
Reputation: 1012
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");
Upvotes: 2
Reputation: 7100
On windows, setForeground doesn't work for Group either.
If you can convince your users to use the Classic Theme, setForeground will miraculously work.
Upvotes: 0
Reputation: 4617
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
.
Upvotes: 5