栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Toolkit.getDefaultToolkit()。getLockingKeyState(…)在程序执行期间从不更新

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Toolkit.getDefaultToolkit()。getLockingKeyState(…)在程序执行期间从不更新

  1. 在普通Java中,没有可见的Java容器也没有正确的方法,而在Windows中也有焦点,KeyLoggers在Java中被阻止,

  2. (不是主要问题,但也不会打印任何内容)来自util.Timer的循环不在EDT中,更多在Swing的Concurency中,工具包来自AWT软件包,EDT问题也适用于大多数AWT软件包

  3. 为我工作(在满足前两点的情况下,..),用于测试目的是尝试在此程序执行期间将焦点移到Windows OS中的另一个活动窗口

import java.awt.AWTEvent;import java.awt.EventQueue;import java.awt.Toolkit;import java.awt.event.AWTEventListener;import java.awt.event.ActionEvent;import java.awt.event.KeyEvent;import javax.swing.AbstractAction;import javax.swing.Action;import javax.swing.Jframe;public class ToolkitAndNumLock {    private javax.swing.Timer timer = null;    private Jframe frame = new Jframe();    public ToolkitAndNumLock() {        frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);        frame.setSize(400, 300);        frame.setVisible(true);        start();        //uncomment Toolkit.getXxx listening a KeyEvents, you can (start();) block SwingTimer         //Toolkit.getDefaultToolkit().addAWTEventListener(listener, AWTEvent.KEY_EVENT_MASK);    }    AWTEventListener listener = new AWTEventListener() {        @Override        public void eventDispatched(AWTEvent event) { if (event instanceof KeyEvent) {     KeyEvent ke = (KeyEvent) event;     if (ke.getID() == KeyEvent.KEY_PRESSED) {         if (ke.getKeyCode() == KeyEvent.VK_CAPS_LOCK) {  System.out.println("CapsLock Pressed");         }         if (ke.getKeyCode() == KeyEvent.VK_SCROLL_LOCK) {  System.out.println("ScrollLock Pressed");         }         if (ke.getKeyCode() == KeyEvent.VK_NUM_LOCK) {  System.out.println("NumLock Pressed");         }     } }        }    };    private void start() {        timer = new javax.swing.Timer(2500, updateCol());        timer.setRepeats(true);        timer.start();    }    public Action updateCol() {        return new AbstractAction("text load action") { private static final long serialVersionUID = 1L; private Boolean bol = true; @Override public void actionPerformed(ActionEvent e) {     if (Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_NUM_LOCK)) {         System.out.println("true");     } else {         System.out.println("false");     }     if (bol) {         Toolkit.getDefaultToolkit().setLockingKeyState(KeyEvent.VK_NUM_LOCK, true);     } else {         Toolkit.getDefaultToolkit().setLockingKeyState(KeyEvent.VK_NUM_LOCK, false);     }     bol = !bol; }        };    }    public static void main(String args[]) {        Runnable runner = new Runnable() { @Override public void run() {     new ToolkitAndNumLock(); }        };        EventQueue.invokeLater(runner);    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/498661.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号