Java Applet中的键盘输入
发布时间:2020-12-15 02:25:20 所属栏目:Java 来源:网络整理
导读:在 Java Applet中监听键盘输入的最佳方法是什么? 我有一个打开JFrame的applet,我使用KeyListener来监听键盘输入.这在我的开发环境(eclipse)中运行良好,但是当我通过浏览器运行applet(我尝试过Firefox和IE)时,它不响应键盘事件. 但是,如果我运行applet然后最
在
Java Applet中监听键盘输入的最佳方法是什么?
我有一个打开JFrame的applet,我使用KeyListener来监听键盘输入.这在我的开发环境(eclipse)中运行良好,但是当我通过浏览器运行applet(我尝试过Firefox和IE)时,它不响应键盘事件. 我已将代码修剪为问题的最基本要点并将其粘贴到下面. 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,getWidth(),getHeight()); g.setColor(Color.black); g.drawString(teststring,50,50); } } 解决方法
我解决了这个问题.如果我在applet上按下按钮或鼠标事件后创建JFrame,则JFrame上的键监听器可以正常工作.显然,从Applet.init()创建框架意味着当通过浏览器打开时,键侦听器无法正常运行.
但问题仍然存在 – 为什么?如果有人能够解释这一点,我将非常感激. 我认为这可能是因为应该在事件派发线程上创建框架,但是使用SwingUtilities.invokeLater或invokeAndWait不起作用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |