Đây là mã để Thực hiện foreground màu trong Buttons trong SWT với phép Mnemonic chìa khóa để được hiển thị cũng và Enabled bằng cách nhấn Alt + "Mnemonic chính";
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);
}
});
Lưu ý: hex2Col là phương pháp của riêng tôi để Chuyển đổi hex Mã màu cho Loại Màu
Lưu ý: Đây ALT + C là kết hợp chính Mnemonic Tôi đã sử dụng
Cảm ơn Mario . Phải mất một chút không quan trọng để có được vị trí chính xác nhưng lời khuyên của bạn đã làm công việc. –
@Kevin Stembridge Tôi mới sử dụng SWT GC, bạn có thể giúp tôi bằng cách làm thế nào để có được vị trí chính xác không? Có vẻ khó khăn vì văn bản có thể được căn chỉnh khác nhau. Cảm ơn! – RAY
Định vị có thể được thực hiện thông qua phương thức getSize() của phương thức Button và stringExtent() của GC. Vì vậy, bạn có thể có được kích thước của nút và kích thước của văn bản. – Alex