如何在按delete键时删除JTextField中的最后一个字符
我想在用户每次向字段输入文本时使用密钥侦听器进行检测。每次触发按键事件时,我都希望获得如何在按delete键时删除JTextField中的最后一个字符,jtextfield,keylistener,keyevent,Jtextfield,Keylistener,Keyevent,我想在用户每次向字段输入文本时使用密钥侦听器进行检测。每次触发按键事件时,我都希望获得JTextField中文本的length()。如果长度>=限制,则我要禁用编辑。但是,如果按下删除键,我想删除JTextField和setEditable(true)中的最后一个字符 如何删除JTextField中的最后一个字符 public void keyPressed (KeyEvent evt) {} public void keyReleased (KeyEvent evt) { int l
JTextField
中文本的length()。如果长度>=限制
,则我要禁用编辑。但是,如果按下删除键,我想删除JTextField
和setEditable(true)
中的最后一个字符
如何删除JTextField
中的最后一个字符
public void keyPressed (KeyEvent evt) {}
public void keyReleased (KeyEvent evt) {
int limit = 1;
JTextField text = (JTextField)evt.getSource();
if (text.getText().length() >= limit) {
text.setEditable(false);
}
else {
if (evt.getKeyCode() == KeyEvent.VK_BACK_SPACE) {
answer ="";
text.setEditable(true);
}
public void keyTyped (KeyEvent evt) {}
}尝试将整个事件处理程序包装在SwingUtilities.invokeLater块中
public void keyReleased(KeyEvent evt)
{
final int limit = 1;
final int keyCode = evt.getKeyCode();
final JTextField text = (JTextField)evt.getSource();
SwingUtilities.invokeLater(new Runnable(){
public void run() {
if (text.getText().length() >= limit)
{
text.setEditable(false);
}
else if(keyCode == KeyEvent.VK_BACK_SPACE)
{
answer ="";
text.setEditable(true);
}
}
});
}
由于事件处理和Swing GUI更新都是在事件调度线程上完成的,因此可能需要这样做才能允许text.getText()方法检索所有输入的文本。尝试将整个事件处理程序包装在SwingUtilities.invokeLater块中
public void keyReleased(KeyEvent evt)
{
final int limit = 1;
final int keyCode = evt.getKeyCode();
final JTextField text = (JTextField)evt.getSource();
SwingUtilities.invokeLater(new Runnable(){
public void run() {
if (text.getText().length() >= limit)
{
text.setEditable(false);
}
else if(keyCode == KeyEvent.VK_BACK_SPACE)
{
answer ="";
text.setEditable(true);
}
}
});
}
由于事件处理和Swing GUI更新都是在事件调度线程上完成的,因此可能需要这样做才能允许text.getText()方法检索所有输入的文本。太棒了!我过去在这类活动中遇到过问题,这是迄今为止最好的解决办法。嘿,埃莉莎,你应该考虑接受他的职位作为解决方案。我过去在这类活动中遇到过问题,这是迄今为止最好的解决办法。嘿,艾瑞莎,你应该考虑接受他的职位作为解决方案。