SWT:获取字符串实际宽度

简介: 由于SWT取用的是系统文字size,有个简单方式可以获取一整段包含中文\英文\数字\特殊字符的字符串宽度。 即是利用Label的computeSize方法,我们知道Label的大小可以随着内容文字伸缩,即可以推断,Label可以拿到准确的文字宽度。

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

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

代码如下:

 

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;
	}

}

 

目录
相关文章
ArcGIS:解决ArcGIS一添加数据就闪退的问题.
ArcGIS:解决ArcGIS一添加数据就闪退的问题.
826 0
|
3月前
|
存储 安全 文件存储
改造旧手机,秒变家庭存储服务器
本文介绍了如何利用旧手机安装AList Flutter搭建内网服务器,以替代传统云存储和NAS。方案兼顾文件安全与下载速度,且成本低廉,适合个人用户。内容包括所需工具、安装步骤及基础配置,帮助用户快速实现本地化文件管理。后续还将介绍如何实现公网访问。
627 1
|
5月前
|
SQL 关系型数据库 MySQL
MySQL下载安装全攻略!小白也能轻松上手,从此数据库不再难搞!
这是一份详细的MySQL安装与配置教程,适合初学者快速上手。内容涵盖从下载到安装的每一步操作,包括选择版本、设置路径、配置端口及密码等。同时提供基础操作指南,如数据库管理、数据表增删改查、用户权限设置等。还介绍了备份恢复、图形化工具使用和性能优化技巧,帮助用户全面掌握MySQL的使用方法。附带常见问题解决方法,保姆级教学让你无忧入门!
MySQL下载安装全攻略!小白也能轻松上手,从此数据库不再难搞!
|
11月前
|
新能源 API
百科-百度免费API接口教程
该接口用于从百度百科获取指定名词的基础解释。支持POST或GET请求,需提供用户ID、用户KEY及查询内容。返回状态码和解释内容或错误提示。示例:https://cn.apihz.cn/api/zici/baikebaidu.php?id=88888888&key=88888888&words=汽车。建议使用个人ID与KEY以享受更高调用频次。
1101 4
|
11月前
|
监控 安全 自动驾驶
|
9月前
|
网络协议 算法 数据建模
IP 地址,包括 IPv6 怎么申请 SSL证书来实现 https
很多企业单位已经开始在使用 IPv6 资源,跟 IPv4 一样,IPv6也是需要SSL证书的。在目前的SSL证书品牌,KeepTrust 是可以支持 IPv6 地址的。跟普通IP地址一样,给IPv6签发SSL证书也是需要验证申请者对 IP 地址的管理权限的。如果是 OV 版,还需要验证组织信息的真实性。
|
11月前
|
前端开发 JavaScript 开发者
工程化(webpack+vite)
在现代前端开发中,工程化是提高开发效率和项目质量的关键。UniApp 结合 Webpack 和 Vite,提供强大的工程化支持。Webpack 功能强大,支持复杂项目的构建;Vite 则利用现代浏览器的 ESM 特性,提供快速的开发体验。开发者可根据项目需求选择合适的工具,显著提升开发效率和项目质量。
|
Unix Linux 网络安全
这份MobaXterm使用指南,低调收藏!
这份MobaXterm使用指南,低调收藏!
1132 0
|
Python
在 Mac 上升级 pip
在 Mac 上升级 pip
266 0
|
算法 Java 调度
对偶问题理论及在优化中的应用实例
对偶问题理论及在优化中的应用实例