在 swt 中的多行文本字段上使用 Tab 键?

问题描述 投票:0回答:2

如何防止多行文本字段“窃取”Tab 键按下操作?

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

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

java text swt tabs multiline
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;
        }
    }
});

3
投票

向文本字段或文本区域添加击键侦听器,并为 TAB 实现特殊处理程序。我也在 Swing 应用程序上看到过这种“标签捕获”现象,这通常很烦人。

如果您仍然想在文本字段中允许使用制表符,您可以为 Shift-TAB 提供另一个处理程序,然后插入一个

\t

© www.soinside.com 2019 - 2024. All rights reserved.