JButton设置快捷键很简单,一条语句就可以实现:jbtExit.setMnemonic(KeyEvent.VK_F4); //Alt+F4
但是有些时候,我们想换成自己喜欢的快捷键,比如:Ctrl+F4,可以用KeyEvent对象的getModifiers()方法
//下面定义一个简单的JFrame,里面放一个Button,用户点击Button,按快捷键Alt+F4,组合键Ctrl+F4退出窗体
代码如下:
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
/**
*
* @author Administrator
*/
public class MainJFrame extends javax.swing.JFrame {
/** Creates new form MainJFrame */
public MainJFrame() {
initComponents();
}
private void exit() {
System.exit(0);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jbtExit = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setResizable(false);
getContentPane().setLayout(null);
jbtExit.setText("Exit(C)");
jbtExit.setMnemonic(KeyEvent.VK_F4);
jbtExit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbtExitActionPerformed(evt);
}
});
jbtExit.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
jbtExitKeyPressed(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(79, 79, 79)
.addComponent(jbtExit, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(81, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addContainerGap(101, Short.MAX_VALUE)
.addComponent(jbtExit, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(89, 89, 89))
);
getContentPane().add(jPanel1);
jPanel1.setBounds(70, 70, 290, 250);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-513)/2, (screenSize.height-461)/2, 513, 461);
}// </editor-fold>
private void jbtExitActionPerformed(java.awt.event.ActionEvent evt) {
exit();
}
private void jbtExitKeyPressed(java.awt.event.KeyEvent evt) {
// 用户按下组合键Ctrl + F4,调用exit()方法,退出窗体
if(evt.getModifiers() == InputEvent.CTRL_MASK&&evt.getKeyCode() == KeyEvent.VK_F4){
exit();
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MainJFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JPanel jPanel1;
private javax.swing.JButton jbtExit;
// End of variables declaration
}//end