我有一个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字段的宽度是完全不同的。 那么,有没有针对这个目的的解决方案?显然,我可以设置更高的宽度值。但是,我认为,这不是一个好的解决方案。
答案 0 :(得分:1)
您可以让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);
来计算文本字符串的屏幕像素大小:
Alamofire.download(.GET, fileUrls[button.tag], destination: { (temporaryURL, response) in
if let directoryURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] as? NSURL {
let fileURL = directoryURL.URLByAppendingPathComponent(response.suggestedFilename!)
self.localFilePaths[button.tag] = fileURL
if NSFileManager.defaultManager().fileExistsAtPath(fileURL.path!) {
NSFileManager.defaultManager().removeItemAtPath(fileURL.path!, error: nil)
}
return fileURL
}
println("temporaryURL - \(temporaryURL)")
self.localFilePaths[button.tag] = temporaryURL
return temporaryURL
}).progress { _, totalBytesRead, totalBytesExpectedToRead in
println("\(totalBytesRead) - \(totalBytesExpectedToRead)")
dispatch_async(dispatch_get_main_queue()) {
self.progressBar.setProgress(Float(totalBytesRead) / Float(totalBytesExpectedToRead), animated: true)
if totalBytesRead == totalBytesExpectedToRead {
self.progressBar.hidden = true
self.progressBar.setProgress(0, animated: false)
}
}
}.response { (_, _, data, error) in
let previewQL = QLReaderViewController()
previewQL.dataSource = self
previewQL.currentPreviewItemIndex = button.tag
self.navigationController?.pushViewController(previewQL, animated: true)
}
答案 1 :(得分:0)
您可以使用当前字体大小计算字符串大小,并按以下方式键入:
GC gc = new GC(textName);
Point textSize = gc.textExtent(myText);
gc.dispose();
textSize为您提供文本大小(以像素为单位)。然后你可以确定要设置的文本控件的大小。