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

问题描述:

如何防止多行文本字段“偷”制表键?我想使用TAB在窗口的元素之间循环,但是当我输入多行文本时,TAB变成了“普通”键,并且只是将制表符插入我输入的文本中。在swt中使用多行文本中的Tab键?

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

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; 
     } 
    } 
}); 

向textfield或textarea添加击键监听程序,并为TAB实施特殊处理程序。我在Swing应用程序上也看到了这个“标签捕获”,通常很烦人。

你可以提供另一个处理程序 - TAB然后将插入一个\t,如果你仍然要允许在文本框选项卡。

+0

它的工作,非常感谢。 – 2010-01-29 12:37:51