清除文本后在 SWT 中设置光标位置
Setting cursor position in SWT after clearing the text
我正在尝试清除文本框中的文本,并在按下回车键后将光标置于文本框的开头。我可以获取文本,清除文本,但光标总是停在文本框的第二行。
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
按键。
在这种情况下你要做的就是告诉他:"I got the information I needed, you don't have to proceed"。您可以通过将 KeyEvent
的 doit
标志设置为 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;
}
}
});
或者,在释放键后更改光标位置:
text1.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if(e.keyCode == SWT.CR) {
String textData = text1.getText();
text1.setText("");
}
}
@Override
public void keyReleased(KeyEvent e) {
if(e.keyCode == SWT.CR) {
text1.setSelection(0);
}
}
});
我正在尝试清除文本框中的文本,并在按下回车键后将光标置于文本框的开头。我可以获取文本,清除文本,但光标总是停在文本框的第二行。
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
按键。
在这种情况下你要做的就是告诉他:"I got the information I needed, you don't have to proceed"。您可以通过将 KeyEvent
的 doit
标志设置为 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;
}
}
});
或者,在释放键后更改光标位置:
text1.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if(e.keyCode == SWT.CR) {
String textData = text1.getText();
text1.setText("");
}
}
@Override
public void keyReleased(KeyEvent e) {
if(e.keyCode == SWT.CR) {
text1.setSelection(0);
}
}
});