Backspace keyReleased问题

时间:2014-02-09 12:10:43

标签: java awt keylistener

所以,我有一堆以编程方式创建的文本字段和组合框,排列在3列上。可以有用户需要的行数。我这样做是为了当用户按TabEnter跳转到下一个文本字段/组合框时。用户可以从选项菜单中选择是否希望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();
            }
        }
    }
}

0 个答案:

没有答案