我正在尝试在SWT窗口中创建一个大白框以显示信息。我希望这看起来与标签不同,但我也希望它不可编辑。
到目前为止,我只能创建一个带有灰色背面的上午可编辑文本框(顶部)。我的目标是使用List
(Text
下)获得的外观。
(List
的问题是它只能在每个列表项的一行显示文本。我需要显示一段文字。)
答案 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传递给文本字段构造函数。