比如实现qq里 发送按钮 与 ctrl+enter 间的隐射?是用jcomponent的实例方法registerKeyboardAction(,,,)么?不是很明白这个机制,请高手指教!

解决方案 »

  1.   

    在JButton上设置快捷键:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class MnemonicButton implements ActionListener{
      public MnemonicButton(){
          JFrame f=new JFrame("MnemonicButton");
          Container contentPane=f.getContentPane();
          JButton b=new JButton("[o]打开新窗口");
          b.setMnemonic('o');
          /*将b加入事件处理模式,当我们按下按钮时,会产生一个事件(ActionEvent),此事件会被ActionListener
           *所接收。而ActionListener是一个interface,里面只有actionPerformed()一个方法,因此我们必须实现
           *actionPerformed()方法,处理我们所要的结果。
           */
          b.addActionListener(this);
          contentPane.add(b);
          f.pack();
          f.show();
          f.addWindowListener(new WindowAdapter(){
               public void windowClosing(WindowEvent e){
                  System.exit(0);
               }
          });
      }
      public void actionPerformed(ActionEvent e){
         JFrame newf=new JFrame("新窗口");
         JLabel label=new JLabel("这是新窗口");
         label.setHorizontalAlignment(JLabel.CENTER);
         newf.getContentPane().add(label);
         newf.setSize(100,100);
         newf.show();
      }
      public static void main(String[] args){
         new MnemonicButton();
      }
    }
    可以了吧
      

  2.   

    在button的ui里面 比如basicButtonUI 有接口设置快捷键属性
      

  3.   

    JButton.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,Modifier.PRIVATE))