gpt4 book ai didi

java - 带有水平线的 SWT 标签未正确显示

转载 作者:太空宇宙 更新时间:2023-11-04 07:00:01 25 4
gpt4 key购买 nike

我正在尝试在 2 列 GridLayout 中显示标签。我似乎无法同时显示文本和下面的水平线:

public void foo(){
popupShell = new Shell(Display.getDefault(), SWT.NO_TRIM | SWT.ON_TOP | SWT.MODELESS);
//popupShell.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
popupShell.setLayout(createNoMarginLayout(2, false));

Label history = new Label(popupShell, SWT.SEPARATOR | SWT.SHADOW_OUT | SWT.HORIZONTAL);
history.setText("History");
history.setVisible(true);
Label fill = new Label(popupShell, SWT.NONE);
fill.setSize(0,30);
}

public static GridLayout createNoMarginLayout(int numColumns, boolean makeColumnsEqualWidth) {
GridLayout layout = new GridLayout(numColumns, makeColumnsEqualWidth);
layout.verticalSpacing = 0;
layout.horizontalSpacing = 0;
layout.marginTop = 0;
layout.marginBottom = 0;

layout.marginLeft = 0;
layout.marginRight = 0;
layout.marginWidth = 0;
layout.marginHeight = 0;
return layout;
}

我得到的只是没有文本的行。

Label.png

我做错了什么?

最佳答案

具有 SWT.SEPARATOR 样式的 Label 不显示任何文本值。您必须使用单独的控件来显示文本。

来自 Label 源,显示 setText 对于 SWT.SEPARATOR 完全被忽略:

public void setText (String string) {
checkWidget();
if (string == null) error (SWT.ERROR_NULL_ARGUMENT);

if ((style & SWT.SEPARATOR) != 0) return;

...

关于java - 带有水平线的 SWT 标签未正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22218517/

25 4 0