gpt4 book ai didi

java - 我如何在 Java 中使用 keyTyped?

转载 作者:行者123 更新时间:2023-11-30 07:52:36 29 4
gpt4 key购买 nike

我曾经使用下面的扫描器类通过 cmd 提示符来监听用户的输入,但我试图让 Java 应用程序通过使用 keyTyped 方法来监听文本。

public static void main(String[] args) throws IOException {
new AsteroidsGame();
InputStream inputstream = new InputStream() {

@Override
public int read() throws IOException {
return 0;
}
};
try {
FileOutputStream output = new FileOutputStream("HighScore.txt",true);
Scanner input = new Scanner(System.in);
PrintStream printStream = new PrintStream(output);
printStream.println(input.next() + " " + points);
printStream.close();
System.out.println("Success!");
}
catch(IOException e){
System.out.println(e);
}
}

我不知道如何处理让它监听击键并将字母组合成一个词的方法。 (这是获取游戏人名的一种方式)

@Override

public void keyTyped(KeyEvent e) {
if(lives == 0)
{
e.getKeyCode() = KeyEvent.???
}
}

任何建议都将不胜感激,因为 Java 库和 Internet 的其他部分在示例或帮助方面提供的内容非常少。

最佳答案

当按下可以转换为有效 Unicode 字符的文本键时,它会生成 keyTyped 事件。我们可以捕获它。向上、向下等键可以通过 e.getKeyCode() 事件类型进行处理。

public class SimpleKeyListener implements KeyListener {

StringBuilder sb = new StringBuilder();

@Override
public void keyTyped(KeyEvent e) {
sb.append(e.getKeyChar());
System.out.println(sb.toString());
}

@Override
public void keyPressed(KeyEvent e) {
}

@Override
public void keyReleased(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_UP) {
System.out.println("UP");
} else if(e.getKeyCode() == KeyEvent.VK_DOWN) {
System.out.println("DOWN");
}
}
}

这里有一个 hello world 来测试它:

public class HelloWorldSwing {
private static void createAndShowGUI() {
JFrame frame = new JFrame("Frame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.addKeyListener(new SimpleKeyListener());

JLabel label = new JLabel("Hello Swing");
frame.getContentPane().add(label);
frame.pack();
frame.setVisible(true);
}

public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}

关于java - 我如何在 Java 中使用 keyTyped?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45642622/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com