【问题标题】:Use Tab-key on a multiline text filed in swt?在swt中的多行文本字段上使用Tab键?
【发布时间】:2011-01-10 19:52:29
【问题描述】:

如何防止多行文本字段“窃取”制表键按下?

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

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

【问题讨论】:

    标签: java text swt tabs multiline


    【解决方案1】:

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

    您可以为 Shift-TAB 提供另一个处理程序,如果您仍想在文本字段中允许制表符,则该处理程序将插入 \t

    【讨论】:

      【解决方案2】:

      SWT 定义了一种使用 TraverseListener 类来实现这种行为的机制。以下 sn-p(取自 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;
              }
          }
      });
      

      【讨论】:

        猜你喜欢
        • 2013-07-22
        • 2018-08-02
        • 2012-10-01
        • 2018-08-14
        • 1970-01-01
        • 2012-09-03
        • 2021-04-13
        • 2017-12-20
        • 1970-01-01
        相关资源
        最近更新 更多