H5W3
当前位置:H5W3 > 问答 > 正文

如何在Windows上使SWT按钮,文本和标签具有相同的高度?

我正在尝试制作一个用于聊天的GUI,并将三个SWT控件连续放置。

不幸的是,我找不到适合他们的完美结合。

以下代码

    Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new GridLayout(3, false));
Label firstLabel = new Label(shell, SWT.NONE);
firstLabel.setText("PROMPT:");
firstLabel.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
Text firstText = new Text(shell, SWT.NONE);
firstText.setText("hello");
firstText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
Button firstButton = new Button(shell, SWT.PUSH);
firstButton.setText("Say");
firstButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
shell.pack();
shell.open();
shell.setSize(400, 300);
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();

也就是说,文本字段的高度与按钮相同,但文本在其中并未垂直居中。

如果按照以下方式编码文本

    Text firstText = new Text(shell, SWT.NONE);
firstText.setText("hello");
firstText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));

我会得到

最美丽的结果将由

    Text firstText = new Text(shell, SWT.BORDER);
firstText.setText("hello");
firstText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));

这是

但是按钮还是比文字高一点。

更新

人们说他们在非Windows平台上有很好的结果,但是问题可能是如何控制SWT控件的填充/边距。

更新2

即使在最佳情况下,文本字段的高度也比Windows上的按钮小,并且结果取决于平台。

最佳答案

这是一个代码示例,该示例应为您提供解决问题的方法:

public static void main(String[] args)
{
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new GridLayout(3, false));
Label firstLabel = new Label(shell, SWT.NONE);
firstLabel.setText("PROMPT:");
firstLabel.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
Text firstText = new Text(shell, SWT.BORDER);
firstText.setText("hello");
firstText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
Button firstButton = new Button(shell, SWT.PUSH);
firstButton.setText("Say");
firstButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
Label secondLabel = new Label(shell, SWT.NONE);
secondLabel.setText("PROMPT:");
secondLabel.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, true));
Text secondText = new Text(shell, SWT.BORDER | SWT.MULTI | SWT.WRAP);
secondText.setText("hello");
secondText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
Button secondButton = new Button(shell, SWT.PUSH);
secondButton.setText("Say");
secondButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, true));
shell.pack();
shell.open();
shell.setSize(400, 300);
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}

看起来像这样:

没有SWT.BORDER:

本文地址:H5W3 » 如何在Windows上使SWT按钮,文本和标签具有相同的高度?

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址