我有一个swt文本框,我分配了一个关键的监听器。 我希望文本框中的第一个字符不应该是空格 因为我使用以下代码 -
textCSVFileName.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
if(textCSVFileName.getCharCount() == 0){
if(e.keyCode == 32){
}
}
}
现在我知道用户输入的第一个字符是空格。 但如果上述条件为真,那么如何限制它进入文本框? 有什么帮助吗?
答案 0 :(得分:3)
您还可以查看Text#addVerifyListener
。可能是用户已输入某个值,然后将光标移动到文本的开头并进入空格。如果你想要的是在所有情况下都不允许文本开头的空格字符,你可能想要使用它。
答案 1 :(得分:3)
虽然问题是通过一个肮脏的解决方法来回答*,但我建议您查看SWT.Verify
事件,听一下并阻止第一个位置的空格:
final Text textField = new Text(shell, SWT.BORDER);
textField.addListener(SWT.Verify, new Listener() {
@Override
public void handleEvent(Event e) {
// get old text and create new text by using the Event.text
final String oldS = textField.getText();
String newS = oldS.substring(0, e.start) + e.text + oldS.substring(e.end);
if(newS.length() > 0 && newS.charAt(0) == ' ')
e.doit = false;
}
});
在任何情况下都会阻止开头的空格。
*“解决方法”甚至不起作用。只要想想当你在第一个位置输入空格时会发生什么,当文本已经包含一些文本时。这种方法不会阻止这种情况。