Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-Toolkit.getLockingState未更新_Java_Awt - Fatal编程技术网

Java-Toolkit.getLockingState未更新

Java-Toolkit.getLockingState未更新,java,awt,Java,Awt,我正在尝试制作一个简单的机器人程序,需要知道滚动锁是否开启。我读了另一个问题,被指向Toolkit.getLockingKeyState()。 但是,此方法正确地告诉我启动程序时是否打开了scoll lock,当更改滚动锁时,它拒绝更新。这是我的密码: import java.awt.Toolkit; import java.awt.event.KeyEvent; /** * @author Luke Senseney * */ public class Mouse { /*

我正在尝试制作一个简单的机器人程序,需要知道滚动锁是否开启。我读了另一个问题,被指向Toolkit.getLockingKeyState()。 但是,此方法正确地告诉我启动程序时是否打开了scoll lock,当更改滚动锁时,它拒绝更新。这是我的密码:

import java.awt.Toolkit;

import java.awt.event.KeyEvent;


/**
 * @author Luke Senseney
 *
 */
public class Mouse
{
    /**
     * @param args 
     */
    public static void main(String[] args)
    {
        Toolkit t=Toolkit.getDefaultToolkit();
        while(true)
        {
            t.sync();
            System.out.println(t.getLockingKeyState(KeyEvent.VK_NUM_LOCK));
            try
            {
                Thread.sleep(1000);
            }catch(InterruptedException e)
            {
                e.printStackTrace();
            }
        }
    }
}

这个版本的工作原理与广告完全相同。我希望区别在于,这段代码从事件分派线程中请求状态(尽管我无法确切解释为什么会这样)

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;

public class CheckLockingState {

    private JComponent ui = null;

    CheckLockingState() {
        initUI();
    }

    public void initUI() {
        if (ui != null) {
            return;
        }

        ui = new JPanel(new BorderLayout(4, 4));
        ui.setBorder(new EmptyBorder(4, 4, 4, 4));

        final JLabel l = new JLabel("Click button to check locking state..");
        ui.add(l, BorderLayout.PAGE_START);

        final Toolkit t = Toolkit.getDefaultToolkit();

        ActionListener checkStateListener = new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                boolean b = t.getLockingKeyState(KeyEvent.VK_NUM_LOCK);
                System.out.println(b);
                l.setText("" + b);
            }
        };

        JButton b = new JButton("Check Locking State");
        b.addActionListener(checkStateListener);
        ui.add(b);
    }

    public JComponent getUI() {
        return ui;
    }

    public static void main(String[] args) {
        Runnable r = new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (Exception useDefault) {
                }
                CheckLockingState o = new CheckLockingState();

                JFrame f = new JFrame(o.getClass().getSimpleName());
                f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                f.setLocationByPlatform(true);

                f.setContentPane(o.getUI());
                f.pack();
                f.setMinimumSize(f.getSize());

                f.setVisible(true);
            }
        };
        SwingUtilities.invokeLater(r);
    }
}