SWT:获取字符串实际宽度

由于SWT取用的是系统文字size,有个简单方式可以获取一整段包含中文\英文\数字\特殊字符的字符串宽度。

即是利用Label的computeSize方法,我们知道Label的大小可以随着内容文字伸缩,即可以推断,Label可以拿到准确的文字宽度。

代码如下:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package galaxy.ide.common.gef.util;
 
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
 
/**
 * @author caiyu
 * @date 2016-5-16
 */
public class FontTool {
 
    private static FontTool instance;
 
    private FontTool() {
    };
 
    public static FontTool getInstance() {
        if (instance == null)
            synchronized (Object.class) {
                if (instance == null)
                    instance = new FontTool();
            }
        return instance;
    }
 
    public int getWidth(String t, Font font) {
        Label text = new Label(Display.getCurrent().getActiveShell(), SWT.NONE);
        text.setText(t);
        int width = text.computeSize(SWT.DEFAULT, SWT.DEFAULT).x;
        text.dispose();
        return width;
    }
 
}

 

posted @   荒土  阅读(1231)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
点击右上角即可分享
微信分享提示