2010-01-29 44 views
8

如何防止多行文本字段「偷」製表鍵?我想使用TAB在窗口的元素之間循環,但是當我輸入多行文本時,TAB變成了「普通」鍵,並且只是將製表符插入我輸入的文本中。在swt中使用多行文本中的Tab鍵?

我該如何處理?我應該編寫一些自定義偵聽器,還是可以使用SWT常量更改組件的行爲?

回答

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

向textfield或textarea添加擊鍵監聽程序,併爲TAB實施特殊處理程序。我在Swing應用程序上也看到了這個「標籤捕獲」,通常很煩人。

你可以提供另一個處理程序 - TAB然後將插入一個\t,如果你仍然要允許在文本框選項卡。

+0

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