可以使用GC类的getAdvanceWidth(char ch)获取当前字符所占的像素宽度.
可以如下面的程序使用该函数:
public static int getStringWidth(String string, Control control) {
int width = 0;
GC gc = new GC(control);
for (int i = 0; i < string.length(); i++) {
char c = string.charAt(i);
width += gc.getAdvanceWidth(c);
}
gc.dispose();
return width;
}
或者更通用的,其中string是目标字符串,font是你要设给字符串的字体对象:
public static int getStringWidth(String string, Font font){
int width = 0;
Shell shell = new Shell();
Label label = new Label(shell, SWT.NONE);
label.setFont(font);
GC gc = new GC(label);
for(int i=0;i<string.length();i++){
char c = string.charAt(i);
width += gc.getAdvanceWidth(c);
}
gc.dispose();
shell.dispose();
return width;
}