我想创建一个java程序,用于获取键盘而无需聚焦,并且没有用于我的项目的keyevent类对象。 有没有办法这样做.. ??
我尝试了这个,但它没有达到我的要求!!
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
import javax.swing.text.Keymap;
public class key1 {
private static void showUI() {
JFrame jFrame = new JFrame("");
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container container = jFrame.getContentPane();
JTextField txt = new JTextField();
container.add(txt, BorderLayout.NORTH);
ActionListener actListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
System.out.println(event.getActionCommand() + " selected");
}
};
JPanel jPane = new JPanel();
JButton defaultButton = new JButton("Hit Enter");
defaultButton.addActionListener(actListener);
jPane.add(defaultButton);
JButton otherButton = new JButton("Onother Button");
otherButton.addActionListener(actListener);
jPane.add(otherButton);
container.add(jPane, BorderLayout.SOUTH);
Keymap map = txt.getKeymap();
KeyStroke stroke = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, false);
map.removeKeyStrokeBinding(stroke);
jFrame.getRootPane().setDefaultButton(defaultButton);
jFrame.setSize(350, 250);
jFrame.setVisible(true);
}
public static void main(String args[]) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
showUI();
}
});
}
}
答案 0 :(得分:1)
我不认为这在Swing级别是可能的..整个KeyEvent API围绕着一些焦点的Component
:(
事实上,我非常确定JVM只会根据操作系统提供的内容生成事件。如果有焦点,你只能获取这些事件。
然而 ,我找到了一个可能做你想做的库。我从来没有用过它..只是出于好奇而抬起头来看: