想设置Ctrl+d,Alt+d,这种组合快捷键,找了半天未果,结果发现,java本省就预先设置好了,挺好用的,而且目测自己没什么办法设置组合键,当按下了Ctrl或者Alt这种键时,根本监听不到其它键的事件。
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
public class Test extends JFrame {
public static void main(String[]args){
Test t = new Test();
t.launch();
}
public void launch(){
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch(Exception e){
e.printStackTrace();
}
JMenuBar menuBar = new JMenuBar();
JMenuItem[] items = new JMenuItem[3];
String[] itemsStr = {"","Alt+D",""};
for(int i=0;i<items.length;i++){
items[i] = new JMenuItem(itemsStr[i]);
items[i].addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(" called");
}
});
menuBar.add(items[i]);
}
//设置Ctrl+D
items[0].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D, InputEvent.CTRL_MASK));
//设置Alt+D
//这里无效,需要向JMenuBar添加JMenu,再为JMenu注册快捷键,也可以为JMenu中的JMenuItem注册快捷键
items[1].setMnemonic(KeyEvent.VK_D);
//设置delete
items[2].setAccelerator(KeyStroke.getKeyStroke("DELETE"));
setJMenuBar(menuBar);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300,200);
setVisible(true);
}
}