请教:在swing中如何给窗口加一个F1的快捷键? 在线等! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Toolkit toolkit = Toolkit.getDefaultToolkit(); toolkit.addAWTEventListener(capListener, AWTEvent.KEY_EVENT_MASK | AWTEvent.MOUSE_EVENT_MASK| AWTEvent.WINDOW_EVENT_MASK); 实现一个监听器: class CapListener implements AWTEventListener { public void eventDispatched(AWTEvent event) { } } package com.fpg.example;import java.awt.AWTEvent;import java.awt.Toolkit;import java.awt.event.AWTEventListener;import java.awt.event.KeyEvent;import javax.swing.JFrame;import javax.swing.JRadioButton;import javax.swing.JTextField;public class WindowF1 extends JFrame{ private Toolkit toolkit = Toolkit.getDefaultToolkit(); public WindowF1() { toolkit.addAWTEventListener(new CapListener(), AWTEvent.KEY_EVENT_MASK); JTextField jt1 = new JTextField(); jt1.setBounds(30,30,60,20); JRadioButton jr1 = new JRadioButton(); jr1.setBounds(60,60,20,20); getContentPane().setLayout(null); add(jt1); add(jr1); setSize(400, 300); setVisible(true); setDefaultCloseOperation(3); } public static void main(String args[]) { new WindowF1(); } // toolkit // 实现一个监听器: class CapListener implements AWTEventListener { public void eventDispatched(AWTEvent event) { Object o = event; if(((KeyEvent)event).getKeyCode() == KeyEvent.VK_F1){ System.out.println("F1"); } } }} KeyEvent类还有两个方法也常常被用到,那就是getKeyCode()与getKeyModifiersText(int modifiers).键盘上每一个按钮都有对应码(Code),可用来查知用户按了什么键,如[Shift]键code为16。利用getKeyCode()方法就可以得知这个码,不过读者要注意,这个方法在keyTyped()上是无法检测出来的,因为keyTyped()只管用户输入的字符,而不会管到键盘的对应码,算是处理比较高层事件的方法。也就是说keyTyped()方法是keyboad independent,因为不同的键盘可能有不同的对应码(如Windows U.S. keyboard与windows French keyboard就有不同的对应码)。因此你一定要将getKeyCode()方法写在keyPressed()或keyReleased()方法中才会有效,因为这两个方法是处理比较低层的方法。 另外getKeyModifiersText()方法可返回修饰键的字符串,如返回“Shift”字符串或是“Ctrl+Shift”字符串,不过你要先传入modifiers参数。你可以直接使用getModifiers()方法来得到modifiers参数。这个方法是定义在InputEvent类中,而KeyEvent继承它,因此就能直接使用这个方法。同样,你必须将getKeyModifiersText()与getModifiers()方法放在keyPressed()或keyReleased()方法中才会有效。 求高手指点 解释下“数值”型赋值给“对象”型。 数据库中二进制 取出后 如何转换成 字符串? 对一句话的不理解! 求正解!~~ JAVA程序类的属性复制问题 请牛人给点指导 关于身份证检验的程序 问个简单的写TXT文件的问题 请问在oracle数据库中,如何用sql实现随机记录? 在Jcreator中怎么调Applet?? Java编程思想(第二版)的问题 String比较的问题 socket通信中的java.io.EOFException问题
import java.awt.Toolkit;
import java.awt.event.AWTEventListener;
import java.awt.event.KeyEvent;import javax.swing.JFrame;
import javax.swing.JRadioButton;
import javax.swing.JTextField;public class WindowF1 extends JFrame{
private Toolkit toolkit = Toolkit.getDefaultToolkit(); public WindowF1() {
toolkit.addAWTEventListener(new CapListener(), AWTEvent.KEY_EVENT_MASK);
JTextField jt1 = new JTextField();
jt1.setBounds(30,30,60,20);
JRadioButton jr1 = new JRadioButton();
jr1.setBounds(60,60,20,20);
getContentPane().setLayout(null);
add(jt1);
add(jr1);
setSize(400, 300);
setVisible(true);
setDefaultCloseOperation(3);
} public static void main(String args[]) {
new WindowF1();
} // toolkit
// 实现一个监听器:
class CapListener implements AWTEventListener {
public void eventDispatched(AWTEvent event) {
Object o = event;
if(((KeyEvent)event).getKeyCode() == KeyEvent.VK_F1){
System.out.println("F1");
}
}
}}
getKeyModifiersText(int modifiers).键盘上每一个按钮都有对应码(Code),可用来查知用户按了什么键,
如[Shift]键code为16。利用getKeyCode()方法就可以得知这个码,不过读者要注意,这个方法在keyTyped()
上是无法检测出来的,因为keyTyped()只管用户输入的字符,而不会管到键盘的对应码,算是处理比较高层
事件的方法。也就是说keyTyped()方法是keyboad independent,因为不同的键盘可能有不同的对应码(如Windows
U.S. keyboard与windows French keyboard就有不同的对应码)。因此你一定要将getKeyCode()方法写在
keyPressed()或keyReleased()方法中才会有效,因为这两个方法是处理比较低层的方法。
另外getKeyModifiersText()方法可返回修饰键的字符串,如返回“Shift”字符串或是“Ctrl+Shift”字符串,
不过你要先传入modifiers参数。你可以直接使用getModifiers()方法来得到modifiers参数。这个方法是定义在
InputEvent类中,而KeyEvent继承它,因此就能直接使用这个方法。同样,你必须将getKeyModifiersText()与
getModifiers()方法放在keyPressed()或keyReleased()方法中才会有效。