如何根据要显示的文本在 SWT 中定义文本的长度?
How to define the length of a Text in SWT depending on the text to display?
我有一个文本,它将显示不同长度的不同数据。最初我使用的是固定长度的文本框。但是,显然它没有用。
然后,我尝试获取文本的长度,使用该长度作为 Text 的宽度,就像这样 -
textName = new Text(composite, SWT.BORDER);
String myText = tree.getSelection()[0].getText();
int length = myText.length();
textName.setBounds(76, 28, length, 21);
textName.setText(myText);
但是,我发现字符串的长度和 SWT 中 Text 字段的宽度是完全不同的。
那么,有没有为此目的的解决方案?显然,我可以为宽度设置更高的值。但是,我认为这不是一个好的解决方案。
您可以让 Text
对象计算其默认大小。
首先设置文本,然后调用 computeSize
计算文本字符串的屏幕像素大小:
Text textName = new Text(composite, SWT.BORDER);
String myText = tree.getSelection()[0].getText();
textName.setText(myText);
Point size = textName.computeSize(SWT.DEFAULT, SWT.DEFAULT);
textName.setBounds(76, 28, size.x, 21);
您可以通过以下方式计算当前字体大小和类型的字符串大小:
GC gc = new GC(textName);
Point textSize = gc.textExtent(myText);
gc.dispose();
textSize 以像素为单位提供文本大小。然后您可以确定要设置的文本控件的大小。
我有一个文本,它将显示不同长度的不同数据。最初我使用的是固定长度的文本框。但是,显然它没有用。 然后,我尝试获取文本的长度,使用该长度作为 Text 的宽度,就像这样 -
textName = new Text(composite, SWT.BORDER);
String myText = tree.getSelection()[0].getText();
int length = myText.length();
textName.setBounds(76, 28, length, 21);
textName.setText(myText);
但是,我发现字符串的长度和 SWT 中 Text 字段的宽度是完全不同的。 那么,有没有为此目的的解决方案?显然,我可以为宽度设置更高的值。但是,我认为这不是一个好的解决方案。
您可以让 Text
对象计算其默认大小。
首先设置文本,然后调用 computeSize
计算文本字符串的屏幕像素大小:
Text textName = new Text(composite, SWT.BORDER);
String myText = tree.getSelection()[0].getText();
textName.setText(myText);
Point size = textName.computeSize(SWT.DEFAULT, SWT.DEFAULT);
textName.setBounds(76, 28, size.x, 21);
您可以通过以下方式计算当前字体大小和类型的字符串大小:
GC gc = new GC(textName);
Point textSize = gc.textExtent(myText);
gc.dispose();
textSize 以像素为单位提供文本大小。然后您可以确定要设置的文本控件的大小。