Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在swt中的多行文本字段上使用Tab键?_Java_Text_Swt_Tabs_Multiline - Fatal编程技术网

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

Java 在swt中的多行文本字段上使用Tab键?,java,text,swt,tabs,multiline,Java,Text,Swt,Tabs,Multiline,如何防止多行文本字段“窃取”选项卡按键 我的意思是:我想使用TAB在窗口的元素之间循环,但是当我输入多行文本时,TAB变成了一个“普通”键,并简单地将制表符插入到我输入的文本中 我该怎么处理?我应该编写一些自定义侦听器,还是可以通过使用SWT常量来更改组件的行为?向textfield或textarea添加一个击键侦听器,并为TAB实现一个特殊的处理程序。我在Swing应用程序上也看到过这种“标签抓取”,这通常很烦人 您可以为Shift TAB提供另一个处理程序,该处理程序随后将插入一个\t,如果

如何防止多行文本字段“窃取”选项卡按键

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


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

向textfield或textarea添加一个击键侦听器,并为TAB实现一个特殊的处理程序。我在Swing应用程序上也看到过这种“标签抓取”,这通常很烦人


您可以为Shift TAB提供另一个处理程序,该处理程序随后将插入一个
\t
,如果您仍然希望在textfield中允许制表符。

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