8

如何防止多行文本字段“窃取”制表键按下?

我的意思是:我想使用 TAB 在窗口的元素之间循环,但是当我输入多行文本时,TAB 变成了“普通”键,并且只是将制表符插入到我正在输入的文本中。

我该如何处理?我应该编写一些自定义侦听器,还是可以通过使用 SWT 常量来更改组件的行为?

4

2 回答 2

20

SWT 定义了一种使用 TraverseListener 类来实现这种行为的机制。以下片段(取自此处)显示了如何:

Text text1 = new Text(shell, SWT.MULTI | SWT.WRAP);
text1.setBounds(10,10,150,50);
text1.setText("Tab will traverse out from here.");
text1.addTraverseListener(new TraverseListener() {
    public void keyTraversed(TraverseEvent e) {
        if (e.detail == SWT.TRAVERSE_TAB_NEXT || e.detail == SWT.TRAVERSE_TAB_PREVIOUS) {
            e.doit = true;
        }
    }
});
于 2010-11-03T06:48:08.390 回答
3

将击键侦听器添加到文本字段或文本区域,并为TAB. 我在 Swing 应用程序上也看到过这种“标签捕捉”,它通常很烦人。

您可以提供另一个处理程序Shift-如果您仍想在文本字段中允许选项卡,则该处理程序TAB将插入一个。\t

于 2010-01-29T12:11:50.787 回答