所以,我有一堆以编程方式创建的文本字段和组合框,排列在3列上。可以有用户需要的行数。我这样做是为了当用户按Tab
或Enter
跳转到下一个文本字段/组合框时。用户可以从选项菜单中选择是否希望keyListener
对keyPressed做出反应(使其在被按下时连续跳转)或在keyReleased上进行选择(即使他按下按键也只跳一次)我做了对于退格键,如果文本字段没有文本(== ""
),它将跳回到上一个文本字段。
现在,我的问题是:
让我们说文本域有文本“foo”。当用户聚焦文本字段时,将选择整个文本。如果用户按退格键,它将删除文本,当用户释放退格键时,它将跳回到之前的文本字段,因为文本字段在他发布时是空的。
至少对我来说这不好。我想要它,这样当文本被选中并且用户按下退格键时,文本应该被删除但是它不应该跳回。它应该跳回下一个keyReleased。
我不想使用keyPressed,或者至少给他选择不这样做,因为用户可能会意外地按下按键太久而且它会像3个文本字段一样删除。
我想我可以让keyPressed只通过某些条件做出反应,但我想探索其他选项,因为我想习惯找到最好的解决方案,解决我的问题而不是划伤我的问题反过来说。
这就是我改变焦点的方式:
if (key == KeyEvent.VK_BACK_SPACE) {
if (prefs.getBoolean("cbBackspace2", false) == true) {
if (prefs.getBoolean("cbBackspace", false) == true) {
String curca = currentview.getName();
String intValue = curca.replaceAll("[a-zA-Z]", "");
int foo = Integer.parseInt(intValue);
if (currentview.getText().equals("") && foo != 1) {
allpret.get(foo - 2).requestFocus();
}
}
}
}