import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Locks {
public static void main(String args[]) {
Runnable runner = new Runnable() {
public void run() {
JFrame frame = new JFrame("Locks");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextArea textArea = new JTextArea();
JScrollPane scrollPane = new JScrollPane(textArea);
frame.add(scrollPane, BorderLayout.CENTER);
// Create status bar with one label per watched locking key
JPanel statusBar = new JPanel(new GridLayout(1, 3));
final JLabel numLock = new JLabel("", JLabel.CENTER);
statusBar.add(numLock);
final JLabel capsLock = new JLabel("", JLabel.CENTER);
statusBar.add(capsLock);
final JLabel scrollLock = new JLabel("", JLabel.CENTER);
statusBar.add(scrollLock);
frame.add(statusBar, BorderLayout.SOUTH);
setKeyStatus(numLock, KeyEvent.VK_NUM_LOCK, "Num");
setKeyStatus(capsLock, KeyEvent.VK_CAPS_LOCK, "Caps");
setKeyStatus(scrollLock, KeyEvent.VK_SCROLL_LOCK, "Scroll");
KeyListener listener = new KeyAdapter() {
public void keyPressed(KeyEvent keyEvent) {
if (keyEvent.getKeyCode() == KeyEvent.VK_NUM_LOCK) {
setKeyStatus(numLock, KeyEvent.VK_NUM_LOCK, "Num");
} else if (keyEvent.getKeyCode() == KeyEvent.VK_CAPS_LOCK) {
setKeyStatus(capsLock, KeyEvent.VK_CAPS_LOCK, "Caps");
} else if (keyEvent.getKeyCode() == KeyEvent.VK_SCROLL_LOCK) {
setKeyStatus(scrollLock, KeyEvent.VK_SCROLL_LOCK, "Scroll");
}
}
};
textArea.addKeyListener(listener);
frame.setSize(250, 150);
frame.setVisible(true);
}
};
EventQueue.invokeLater(runner);
}
private static void setKeyStatus(JLabel label, int key, String prefix) {
Toolkit toolkit = Toolkit.getDefaultToolkit();
String status = (toolkit.getLockingKeyState(key) ? "On" : "Off");
label.setText(prefix+status);
}
}
|