java标签自动字体大小
我有一个SWT标签,它显示从文件加载的不同单行文本。是否有一种方法可以自动调整字体大小,以便在出现长文本时字体大小变小,标签仍显示全文?java标签自动字体大小,java,label,font-size,Java,Label,Font Size,我有一个SWT标签,它显示从文件加载的不同单行文本。是否有一种方法可以自动调整字体大小,以便在出现长文本时字体大小变小,标签仍显示全文? 当标签没有这样的属性时,是否可以使用字体和字体大小来计算字符串的大小?我的理解如下。标签宽度是固定的(假设为200)。您读取的字符串需要300像素才能与当前字体匹配。您可以使用GC.textExtent(String) 试试这个有效的例子 private static boolean setText(Label label, String txt, Fon
当标签没有这样的属性时,是否可以使用字体和字体大小来计算字符串的大小?我的理解如下。标签宽度是固定的(假设为200)。您读取的字符串需要300像素才能与当前字体匹配。您可以使用
GC.textExtent(String)
试试这个有效的例子
private static boolean setText(Label label, String txt, Font font)
{
int height = font.getFontData()[0].getHeight();
GC gc = new GC(label);
gc.setFont(font);
Point size = gc.textExtent(txt);
Rectangle bounds = label.getBounds();
int diff = bounds.width-size.x;
if(diff >= 0 || height <=2)
{
label.setFont(font);
label.setText(txt);
return true;
}
else
{
String name = font.getFontData()[0].getName();
int style = font.getFontData()[0].getStyle();
FontData data = new FontData(name, Math.max(1,height-1), style);
Font newFont = new Font(Display.getCurrent(), data);
if(!setText(label, txt, newFont))
{
newFont.dispose();
}
}
gc.dispose();
return false;
}
public static void main(String[] args) {
Display display = new Display();
final Shell shell = new Shell(display);
shell.setSize(600, 300);
Label label = new Label(shell, SWT.NONE);
label.setBounds(20, 20, 100, 50);
setText(label, "hello stackoverflow!!!!!!", Display.getDefault().getSystemFont());
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
private静态布尔setText(标签标签、字符串txt、字体)
{
int height=font.getFontData()[0].getHeight();
GC=新GC(标签);
gc.setFont(字体);
点大小=gc.textExtent(txt);
矩形边界=label.getBounds();
int diff=bounds.width size.x;
如果(差异>=0 | |高度