2

我正在尝试在 SWT 窗口中制作一个大白框来显示信息。我希望它看起来与标签不同,但我也希望它是不可编辑的。

到目前为止,我只能创建一个带有灰色背面(顶部)的中午可编辑文本框。我的目标是获得List(在 下Text)的外观。

在此处输入图像描述

(问题List在于它只能在每个列表项的一行上显示文本。我可能需要显示一段文本)。

4

3 回答 3

4

您还可以捕获键盘事件并阻止它们。

txtField.addKeyListener( new KeyAdapter() {
    public void keyPressed( KeyEvent e ) {
        e.doit = false;
    }
} );
于 2013-06-24T12:18:43.760 回答
3

如果您确实必须使用白色背景,则可以使用普通Text并阻止对其进行编辑。

但是,正如@Eugene 已经提到的那样,您应该遵守 UI 约定,因为否则可能会使用户感到困惑......

Text这是一些创建具有“普通”背景的只读文件的代码:

public static void main(String[] args)
{
    Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setText("StackOverflow");
    shell.setLayout(new FillLayout());

    Text text = new Text(shell, SWT.BORDER);
    text.setText("Read only");

    text.addListener(SWT.Verify, new Listener()
    {
        @Override
        public void handleEvent(Event e)
        {
            e.doit = false;
        }
    });

    shell.pack();
    shell.setSize(600, 60);
    shell.open();
    while (!shell.isDisposed())
    {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}
于 2013-06-22T10:46:18.007 回答
1

您可以将 SWT.READ_ONLY 传递给您的文本字段构造函数。

于 2013-06-21T20:56:09.657 回答