java - 清除文本后在 SWT 中设置光标位置

标签 java swt

我试图清除文本框中写入的文本,并在按下 ENTER 键后将光标置于文本框的开头。我能够获取文本,清除文本,但光标始终位于文本框的第二行。

final Display display = new Display();
Shell shell = new Shell(display);
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 1;
shell.setLayout(gridLayout);

final Text text1 = new Text (shell, SWT.MULTI | SWT.BORDER | SWT.WRAP | SWT.V_SCROLL);
text1.setLayoutData(new GridData(GridData.FILL_BOTH));

text1.addKeyListener(new KeyAdapter() {
    public void keyPressed(KeyEvent e) {
        if(e.keyCode == SWT.CR) {
            String textData = text1.getText();
            text1.setText("");
            text1.setSelection(0);
        }
    }
});

我错过了什么?

谢谢!

最佳答案

问题来自这样一个事实:在获取文本并清除该框后,按键监听器正在尝试完成其工作并应答 ENTER 键按下。

在这种情况下你要做的就是告诉他:“我已经得到了我需要的信息,你不必继续”。您可以通过将 KeyEventdoit 标志设置为 false 来实现此目的:

text1.addKeyListener(new KeyAdapter() {
    public void keyPressed(KeyEvent e) {
        if(e.keyCode == SWT.CR) {
            String textData = text1.getText();
            text1.setText("");

            // HERE IS THE IMPORTANT CODE PART, NO SELECTION IS NEEDED
            e.doit = false;
        }
    }
});

关于java - 清除文本后在 SWT 中设置光标位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48280420/

相关文章:

java - 获取 Java Swing 组件的内容

java - 我们如何在 Eclipse 中安装 Java Api 帮助?

java - 工具栏管理器 : Why separators are not displayed?

java - 搜索用于将 GUI 组件写入 PDF 的 Java 库或第 3 方库

java - 如何移动标签中的下一行?

java - 无法在从html文件呈现的aspose ppt中嵌入样式

java - 如何使用 .split 在某个单词之后分割字符串?

java - IDEA编译错误 Unknown version '8' ,不会给编译器任何版本设置

java - 使用 Eclipse SWT Image、JAVA 和 SQLite 插入、存储和检索图像

java - 关于样式为 SWT.CALENDAR 的 DateTime 小部件