SWT中的白色,只读文本字段

时间:2013-06-21 20:54:53

标签: java swt readonly

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

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

enter image description here

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

3 个答案:

答案 0 :(得分:4)

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

txtField.addKeyListener( new KeyAdapter() {
    public void keyPressed( KeyEvent e ) {
        e.doit = false;
    }
} );

答案 1 :(得分: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();
}

答案 2 :(得分:1)

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