gpt4 book ai didi

java - Java Applet 中的键盘输入

转载 作者:搜寻专家 更新时间:2023-11-01 03:44:23 26 4
gpt4 key购买 nike

在 Java Applet 中监听键盘输入的最佳方式是什么?

我有一个打开 JFrame 的小程序,我正在使用 KeyListener 来监听键盘输入。这在我的开发环境 (eclipse) 中运行良好,但是当我通过浏览器(我尝试过 Firefox 和 IE)运行小程序时,它不响应键盘事件。但是,如果我运行小程序,然后最小化和最大化框架,它就可以工作。我曾尝试以多种不同方式将焦点设置到 JFrame,并以编程方式最小化和最大化它,但没有效果。我也尝试过键绑定(bind),但遇到了同样的问题。

我已将我的代码精简到问题的最基本要素并将其粘贴在下面。有人可以看出我做错了什么或提出更好的解决方案吗?

public class AppletTest extends Applet 
{
private GuiTest guiTest;

public void init() {
guiTest = new GuiTest();
final AppletTest at = this;
guiTest.addKeyListener(new KeyListener() {
public void keyPressed(KeyEvent ke) {
at.keyPressed(ke);
}
public void keyReleased(KeyEvent ke) {}
public void keyTyped(KeyEvent e) {}
});
}

private void keyPressed(KeyEvent ke)
{
System.out.println("keyPressed "+KeyEvent.getKeyText(ke.getKeyCode()));
getGuiTest().test(KeyEvent.getKeyText(ke.getKeyCode()));
}
}

public class GuiTest extends JFrame {
String teststring = "?";
public GuiTest()
{
setSize(100,100);
setEnabled(true);
setVisible(true);
setFocusable(true);
requestFocus();
requestFocusInWindow();
toFront();
}

public void test(String t)
{
teststring = t;
repaint();
}

public void paint(Graphics g)
{
g.setColor(Color.white);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.black);
g.drawString(teststring, 50, 50);
}
}

最佳答案

我解决了这个问题。如果我在小程序上按下按钮或鼠标事件后创建 JFrame,则 JFrame 上的关键监听器起作用。显然,从 Applet.init() 创建框架意味着关键监听器在通过浏览器打开时无法正常运行。

然而,问题仍然存在——为什么?如果有人能解释这一点,我将不胜感激。

我认为这可能是因为框架应该在事件派发线程上创建,但是使用 SwingUtilities.invokeLater 或 invokeAndWait 不起作用。

关于java - Java Applet 中的键盘输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5922849/

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