java - Java SWT:更改文本后标签宽度没有变化
问题描述
我在 Stack Overflow 中阅读了很多关于这个问题的内容,并应用了所有建议的解决方案(getShell 包、布局、getparent 布局等......),但没有一个有效。
我有一个带有文本值的标签。我还有一个按钮,当单击该按钮时,我正在用更长的文本更改标签的内容。问题是标签的宽度没有改变,只有一部分新的较长文本是可见的。
我的文字代码:
Composite composite_2 = new Composite(this, SWT.NONE);
composite_2.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, true, true, 1, 1));
composite_2.setLayout(new GridLayout(2, false));
Label lblNumbers = new Label(composite_2, SWT.NONE);
lblNumbers.setText("Números:");
Label lblNumbersValue = new Label(composite_2, SWT.NONE);
lblNumbersValue.setText("...");
. . .
btnElegirNmeros.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
lblNumbersValue.setText("asddadadasdasdasd");
lblNumbersValue.getParent().layout();
lblNumbersValue.pack();
getShell().pack();
getShell().layout();
}
});
解决方案
从 SWT 4.6 开始,触发布局更新最可靠的方法是Control.requestLayout()
.
它应该解决这类问题。
所以在你的情况下尝试lblNumbersValue.requestLayout();
。
推荐阅读
- python - 按频率过滤字符串列表
- html - 如何在弹性框中设置行高?
- python - 这个循环如何打破openpyxl
- python - TypeError: 'int' 对象在 loss.backward() 中不可调用
- c# - 检测到的周期
- android - 是否可以在显示之前处理camerax预览的数据?
- node.js - 使用 MongoDB 创建并推送到数组
- vba - 如何在“ok”之前用for循环合并空单元格
- flutter - base64.encode Not Encoding The whole File , Missing Parts file Encoding Flutter Dart ERROR
- applescript - 无法使用 AppleScript/ShellScript 写入主库/Application Support 文件夹中的文件