怎么用Java监听键盘实现Ctrl+字母的快捷键 各位高手,请教一下,怎么用Java监听键盘实现Ctrl+字母的快捷键,好像JDK只提供了Alt+数字键的快捷键,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我给你举个例子: MenuBar menubar = new MenuBar(); Menu menu = new Menu("游戏"); MenuShortcut paMsc = new MenuShortcut(KeyEvent.VK_P, false); MenuShortcut stMsc = new MenuShortcut(KeyEvent.VK_S, false);//实现Ctrl+S 的快捷键 你去看文档 MenuItem pa = new MenuItem("暂停", paMsc); MenuItem st = new MenuItem("继续", stMsc);在Frame窗口中: menubar.add(menu); menu.add(pa); menu.add(st); pa.addActionListener(new MenuListener); st.addActionListener(new MenuListener); this.setMenuBar(menubar);//监听器类private class MenuListener implements ActionListener { public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("暂停")) { System.out.println("你按下了暂停菜单"); } else if (e.getActionCommand().equals("继续")) { System.out.println("你按下了继续菜单"); } } }这样你按 Ctrl + p System.out.println("你按下了暂停菜单");按 Ctrl +s System.out.println("你按下了继续菜单"); 你先看看你的组合键打印出来的是什么字符。最后通过事件的标示符来判断是不是你想要的组合键。比如我实现的Ctrl+X关闭一个面板。代码如下:import java.awt.event.InputEvent;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.JFrame;import javax.swing.KeyStroke;public class MainFace extends JFrame { public MainFace() { super("Ideal GUI"); //添加默认的点击关闭按钮的动作实现 addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { dispose(); System.exit(0); } }); //下面的代码是为主面板添加键盘事件监听 addKeyListener(new KeyListener() { @Override public void keyPressed(KeyEvent e) { //按下某个键时调用此方法 } @Override public void keyReleased(KeyEvent e) { //释放某个键时调用此方法 } @Override public void keyTyped(KeyEvent e) { //键入某个键时调用此方法 KeyStroke.getKeyStroke(KeyEvent.VK_Q, InputEvent.CTRL_MASK); System.out.println(" code = " + e.getKeyCode()); if (e.getKeyChar() == '') { System.exit(1); } } }); } public static void main(String args[]) { MainFace mGUI = new MainFace(); mGUI.requestFocus(); }} 代码有点小错误,看不到效果,已经修正import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.JFrame;public class MainFace extends JFrame { public MainFace() { super("Ideal GUI"); //添加默认的点击关闭按钮的动作实现 addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { dispose(); System.exit(0); } }); //下面的代码是为主面板添加键盘事件监听 addKeyListener(new KeyListener() { @Override public void keyPressed(KeyEvent e) { //按下某个键时调用此方法 } @Override public void keyReleased(KeyEvent e) { //释放某个键时调用此方法 } @Override public void keyTyped(KeyEvent e) { //键入某个键时调用此方法 if (e.getKeyChar() == '') { System.exit(1); } } }); } public static void main(String args[]) { MainFace mGUI = new MainFace(); mGUI.setSize(400, 300); mGUI.setVisible(true); mGUI.requestFocus(); }} public class TestEvent { public static void main(String[] args) { JFrame frame = new JFrame(" TestKeyPressed "); frame.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { if ((e.isControlDown() == true) && (e.getKeyCode() == KeyEvent.VK_UP)) { System.out.println("ctrl + UP has pressed"); } else { System.out.println("other key pressed"); } } }); frame.setSize(500, 500); frame.setVisible(true); }} java String的方法使用问题 做一次if比较 和一次new操作 哪个需要花费的时间长一些 欢迎拍砖~~ 删除一个组件 frame 关闭按钮 list 输出的问题 关于电子相册制作中的问题 菜鸟级问题:怎样把一个字符串变量转换为一个整形变量,如果不能转换需要抛出异常? 一个简单的问题--取数 明年考上海交大的计算机研究生,欢迎讨论,谢谢!我多给分! 请问怎样远程监控WEB SERVER是否运行? struts2 中文文件下载问题!!!求高手!!! 在Java Swing中,如何做一个可用鼠标拖动改变内部面板大小的JFrame
MenuBar menubar = new MenuBar();
Menu menu = new Menu("游戏");
MenuShortcut paMsc = new MenuShortcut(KeyEvent.VK_P, false);
MenuShortcut stMsc = new MenuShortcut(KeyEvent.VK_S, false);//实现Ctrl+S 的快捷键 你去看文档
MenuItem pa = new MenuItem("暂停", paMsc);
MenuItem st = new MenuItem("继续", stMsc);在Frame窗口中:
menubar.add(menu);
menu.add(pa);
menu.add(st);
pa.addActionListener(new MenuListener);
st.addActionListener(new MenuListener);
this.setMenuBar(menubar);//监听器类
private class MenuListener implements ActionListener { public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("暂停")) {
System.out.println("你按下了暂停菜单");
} else if (e.getActionCommand().equals("继续")) {
System.out.println("你按下了继续菜单");
}
} }
这样你按 Ctrl + p System.out.println("你按下了暂停菜单");
按 Ctrl +s System.out.println("你按下了继续菜单");
比如我实现的Ctrl+X关闭一个面板。代码如下:import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.KeyStroke;public class MainFace extends JFrame { public MainFace() { super("Ideal GUI");
//添加默认的点击关闭按钮的动作实现
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
});
//下面的代码是为主面板添加键盘事件监听
addKeyListener(new KeyListener() { @Override
public void keyPressed(KeyEvent e) {
//按下某个键时调用此方法 } @Override
public void keyReleased(KeyEvent e) {
//释放某个键时调用此方法
} @Override
public void keyTyped(KeyEvent e) {
//键入某个键时调用此方法
KeyStroke.getKeyStroke(KeyEvent.VK_Q, InputEvent.CTRL_MASK);
System.out.println(" code = " + e.getKeyCode());
if (e.getKeyChar() == '') {
System.exit(1);
}
} });
}
public static void main(String args[]) {
MainFace mGUI = new MainFace();
mGUI.requestFocus();
}
}
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;import javax.swing.JFrame;public class MainFace extends JFrame { public MainFace() { super("Ideal GUI");
//添加默认的点击关闭按钮的动作实现
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
});
//下面的代码是为主面板添加键盘事件监听
addKeyListener(new KeyListener() { @Override
public void keyPressed(KeyEvent e) {
//按下某个键时调用此方法 } @Override
public void keyReleased(KeyEvent e) {
//释放某个键时调用此方法
} @Override
public void keyTyped(KeyEvent e) {
//键入某个键时调用此方法
if (e.getKeyChar() == '') {
System.exit(1);
}
} });
}
public static void main(String args[]) {
MainFace mGUI = new MainFace();
mGUI.setSize(400, 300);
mGUI.setVisible(true);
mGUI.requestFocus();
}
}
public class TestEvent {
public static void main(String[] args) { JFrame frame = new JFrame(" TestKeyPressed ");
frame.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if ((e.isControlDown() == true)
&& (e.getKeyCode() == KeyEvent.VK_UP)) {
System.out.println("ctrl + UP has pressed");
} else {
System.out.println("other key pressed");
}
}
});
frame.setSize(500, 500);
frame.setVisible(true);
}
}