没有密钥释放方法如何从键盘读取?

时间:2016-12-12 16:59:45

标签: java keyboard

我应该在不使用密钥释放方法的情况下重写下面的代码,以便它具有完全相同的结果。

我正在努力解决的问题是当用户持有相同的密钥更长时间时如何复制结果。使用密钥释放方法持有相同的密钥(例如2秒)将导致只读取一个密钥。使用键输入或按键方法,相同的行为将导致读取相同类型的多个键。

对这些建议表示感谢!

以下是代码:

import java.awt.Dimension;    
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame; 

public class KeyTest extends JFrame implements KeyListener {
    private int counter = 0;
    private String userInput = "";
    private final String secret = "secret";

    public KeyTest() {
        super("KeyListener Test");
        setPreferredSize(new Dimension(300, 100));
        addKeyListener(this);

        pack();
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    @Override
    public void keyPressed(KeyEvent evt) {
    }

    @Override
    public void keyReleased(KeyEvent evt) {
        char c = evt.getKeyChar();
        if(counter < secret.length())
            checkSecret(c);
    }

    @Override
    public void keyTyped(KeyEvent evt) {
    }

    private void checkSecret(char c) {
        if(c == secret.charAt(counter)) {
            counter++;
            userInput = userInput+c;
        }
        else {
            counter = 0;
            userInput = "";
        }

        if(userInput.equals(secret))
            setTitle("Secret password");
    }
}

0 个答案:

没有答案