【问题标题】:Detect caret movement in Text control检测文本控件中的插入符号移动
【发布时间】:2013-03-30 08:31:59
【问题描述】:

我觉得自己很愚蠢,但是当用户更改 TextStyledText 输入字段中的插入符号时,我似乎无法通知听众。我试过SelectionListenerCaretListener(仅限StyledText),但是当我使用箭头键在多行输入字段内移动插入符号时,没有一个可靠调用。 CaretListener 有时会被调用,但是,例如,在选择所有文本并点击 Del 之后不会调用。

【问题讨论】:

    标签: java swt listener caret


    【解决方案1】:

    SWT.MouseUpSWT.KeyUp 似乎是你的方法:

    public static void main(String[] args)
    {
        Display display = new Display();
        Shell shell = new Shell(display);
    
        shell.setLayout(new FillLayout());
    
        Text text = new Text(shell, SWT.BORDER);
    
        Listener listener = new Listener()
        {
            @Override
            public void handleEvent(Event arg0)
            {
                System.out.println("Event");
            }
        };
    
        text.addListener(SWT.KeyUp, listener);
        text.addListener(SWT.MouseUp, listener);
    
        shell.pack();
        shell.open();
    
        while (!shell.isDisposed()) {
          if (!display.readAndDispatch())
            display.sleep();
        }
        display.dispose(); 
    }
    

    您可以使用 static 变量跟踪旧的插入符号位置,并将其与 Listener 中的当前位置进行比较。


    另一个非常方便的事件是SWT.Verify,只要包含的文本发生更改,就会调用它。请注意,这不会处理鼠标的位置变化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-24
      • 1970-01-01
      • 2014-10-31
      • 2012-03-17
      • 2019-03-27
      • 1970-01-01
      相关资源
      最近更新 更多