如何阻止多行文本字段“窃取”标签键按下?
我的意思是:我想使用TAB在窗口的元素之间循环,但是当我输入多行文本时,TAB变成“普通”键,只需将制表符插入我正在键入的文本中。
我该如何处理?我应该编写一些自定义侦听器,还是可以使用SWT常量更改组件的行为?
答案 0 :(得分:20)
SWT定义了一种使用TraverseListener类实现此类行为的机制。以下代码段(摘自here)显示了如何:
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;
}
}
});
答案 1 :(得分:3)
将键击侦听器添加到textfield或textarea,并为 TAB 实现一个特殊处理程序。我在Swing应用程序上看到了这个'tab catch',这通常很烦人。
您可以为 Shift - TAB 提供另一个处理程序,如果您仍想在文本字段中允许选项卡,则可以插入\t
。