当前位置:  技术问答>java相关

如何设置一个jButton按钮的快捷键?

    来源: 互联网  发布时间:2015-06-14

    本文导语:  比如我想用“Enter”回车键来确定“确定”按钮, “e”键来确定“取消”按钮 请问该如何处理?最好给出一些代码…… | jButton.setMnemonic(KeyEvent.VK_ENTER);试试看 | import javax.swi...

比如我想用“Enter”回车键来确定“确定”按钮,
“e”键来确定“取消”按钮
请问该如何处理?最好给出一些代码……

|
jButton.setMnemonic(KeyEvent.VK_ENTER);试试看

|
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;



public class AuthenDlg extends JDialog implements ActionListener
{
    JPanel panel1 = new JPanel();
    JLabel jLabel1 = new JLabel();
    JButton jButton1 = new JButton();
    JButton jButton2 = new JButton();
    JPasswordField jPasswordField1 = new JPasswordField(10);

    public AuthenDlg(JFrame frame, String title, boolean modal) {
        super(frame, title, modal);
        try {
            jbInit();
            setSize(400,170);
            setLocation(300,200);
        }
        catch(Exception ex) {
            ex.printStackTrace();
        }
    }




    public AuthenDlg() {
        this(null, "key_test", false);
    }
    void jbInit() throws Exception {
        panel1.setLayout(null);

        usrName = null;
        jLabel1.setText("PASSWORD");
        jLabel1.setBounds(new Rectangle(73, 40,70,20));
        jButton1.setText("OK");
        jButton1.setBounds(new Rectangle(102, 91,85,25));
        jButton1.addActionListener(this);
        jButton1.addKeyListener(new java.awt.event.KeyListener() {
            public void keyPressed(KeyEvent e)
            {
                key_press_event(e);
            }

            public void keyTyped(KeyEvent e) {}

            public void keyReleased(KeyEvent e) {}

           }
        );
        jButton2.setText("CANCEL");
        jButton2.setBounds(new Rectangle(199, 91,85,25));
        jButton2.addActionListener(this);
        jButton2.addKeyListener(new java.awt.event.KeyListener() {
            public void keyPressed(KeyEvent e)
            {
                key_press_event(e);
            }

            public void keyTyped(KeyEvent e) {}

            public void keyReleased(KeyEvent e) {}

           }
        );
        getContentPane().add(panel1);
        jPasswordField1.setBounds(new Rectangle(171, 40,140,20));
        jPasswordField1.addKeyListener(new java.awt.event.KeyListener() {
            public void keyPressed(KeyEvent e)
            {
                key_press_event(e);
            }

            public void keyTyped(KeyEvent e) {}

            public void keyReleased(KeyEvent e) {}

           }
        );
        panel1.add(jButton1, null);
        panel1.add(jButton2, null);
        panel1.add(jLabel1, null);
        panel1.add(jPasswordField1,null);
        

        this.addWindowListener(new MyWindowListener());
        this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
    }

    public static void main(String args[]){
        AuthenDlg lock = new AuthenDlg();
        lock.show();
    }

   
    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource() == jButton1)
        {
           jButton1_actionPerformed();
        }

        if(e.getSource() == jButton2)
        {
            cancelAct();
        }
    }

    void jButton1_actionPerformed()
    {
        System.out.println("this is ok");        
    }

    void key_press_event(KeyEvent e)
    {
        if (e.getKeyCode()==KeyEvent.VK_ENTER )
            jButton1_actionPerformed();
        
        if (e.getKeyCode()==KeyEvent.VK_E)
            cancelAct();
    }
    
    void cancelAct()
    {
System.out.println("this is cancel");
this.hide();
}

  
class MyWindowListener extends WindowAdapter
{
public void windowClosing(WindowEvent e)
    {
        cancelAct();
}

}

}

|
当button有焦点时, 按空格将激发action事件

|
jButton.setMnemonic(KeyEvent.VK_ENTER);是肯定可以的,不过就是“Alt+Enter”。其它的我也不知道啊,是不是有类似的KeyEvent.?可以选择成只要回车就可以?

|
你要想用Enter直接响应,最好的办法是将每个组件都加键盘的响应事件,然后,执行你要的方法
例如:
class Key_Listener implements KeyListener
{
            public void keyPressed(KeyEvent e)
            {
                key_press_event(e);
            }

            public void keyTyped(KeyEvent e) {}

            public void keyReleased(KeyEvent e) {}

            void key_press_event(KeyEvent e)
             {
                if (e.getKeyCode()==KeyEvent.VK_ENTER )
                     System.out.println("enter");
        
                 if (e.getKeyCode()==KeyEvent.VK_E)
                    System.out.println("e");
              }            

}


在你的程序中,每个组件都加响应事件
Key_Listener keyL = new Key_Listener();

........
jButton1.addKeyListener(keyL) ;
jButton2.addKeyListener(keyL) ;
........

|
监视按键事件咯. . .当有回车按下的时候,发送一个action事件给这个按钮

|
to drinkant(喝酒的蚂蚁):
天哪!如果是这样的话,那岂不是我在其他想回车的地方都不能回撤了?呵呵!

你可以试试registerKeyboardAction,下面是它的api文档。
public void registerKeyboardAction(ActionListener anAction,
                                   KeyStroke aKeyStroke,
                                   int aCondition)This method is now obsolete, please use a combination of getActionMap() and getInputMap() for similiar behavior.

|
1。jButton.setMnemonic(KeyEvent.VK_ENTER);这是一种较简单的,要按alt+enter。


|
首先引入包
import javax.swing.event.*;
然后定义一个
    KeyStroke stroke1 = KeyStroke.getKeyStroke     (KeyEvent.VK_ENTER,ActionEvent.CTRL_MASK,true);//创建一个KeyStroke类
    最后一个参数的意思是是否在Keyrelease时触发此事件
    JButton jButton1 = new JButton();

   jButton1.registerKeyboardAction(new ActionListener(){
            //要执行的方法
            public void actionPerformed(ActionEvent e){
                System.out.println("OK");
            }
        },stroke1,JComponent.WHEN_IN_FOCUSED_WINDOW);
    }
    registerKeyboardAction方法的参数意思是这样的
    1.ActionListener对象,可以定义你要执行的方法
    2.KeyStroke 对象,定义触发事件的条件
    3.何时按Ctrl+Enter时发生此事件,比如
        JComponent.WHEN_IN_FOCUSED_WINDOW
        JComponent.WHEN_FOCUSED等

    
 
 

您可能感兴趣的文章:

  • photoshop教程 快捷键命令大全表免费下载 快捷键如何设置 复制 放大等
  • Solaris/OpenSolaris下如何设置快捷键
  • 键盘快捷键设置工具 Qliner Hotkeys
  • JavaScript设置快捷键 jwerty
  • f7下可以设置输入法的热键,但是怎么在中英文输入法间切换呢?有快捷键吗?
  • 如何设置jbutton的文本颜色?谢谢 iis7站长之家
  • ##################____ code blocks 快捷键设置的问题?
  • 深入分析为Visual Assist设置快捷键的方法
  • JBuilder 设置快捷键问题?
  • 如何设置JButton的快捷键???
  • WinForm中快捷键与组合按键的设置方法
  • to lianyunzxp(小刀)和诸位大虾:如何设置一个按钮的快捷键为回车键“Enter”?
  • html中<radio>单选按钮控件标签用法解析及如何设置默认选中
  • 在Jbuilder中,如何设置一个按钮的初始位置以及初始化按钮的大小?
  • jb7在设置server config时,没有ok按钮,只有reset to default按钮
  • 我的jbuilder7在设置server的时候,我找不到OK按钮,只有一个set default按钮
  • 我提一个弱智问题:用JB6写程序,在窗体上加按钮和其他控件,如何自行设置他们地位置?
  • 请问自定义的JDialog怎么设置"确定"和"取消"按钮?
  • 有没有开发Applet的RAD开发工具? 我手工添加Applet设置按钮位置的代码太麻烦了
  • gtk2.0中是不是不能给按钮改变颜色??怎样给当前窗口设置背景颜色和背景图画
  • jquery设置按钮停顿3秒不可用
  • JDialog的哪个方法是设置对话框右上角的"×"按钮无效?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何设置jbutton的文本颜色?谢谢
  • Rose进行JavaOOM的超级菜问题No.1:如何设置一个类MyButton成为JButton类的子类
  • 怎样设置JButton的大小,形状(只是要它凸起),位置,颜色?
  • C++ Bitsets 成员 count():返回被设置的位的个数
  • 在使用gcc之前,需要先设置环境吗?如何设置?在线等!!!
  • C++ I/O 成员 precision():设置精度
  • 用grub能否设置启动密码?如何设置?
  • C++ Bitsets 成员 any():如果有任何一个位被设置就返回true
  • 在linux服务器上面设置squid后怎么设置可以使客户端能使用QQ?
  • C++ Double Ended Queues(双向队列) 成员 assign():设置双向队列的值
  • 请问设置一个和root权限差不多的用户怎么设置?
  • C++ Vectors 成员 reserve():设置Vector最小的元素容纳数量
  • 用JSP。XML开发网站。请问那种环境设置最好。该如何设置环境
  • C++ Bitsets 成员 set():设置位
  • 环境变量设置设置与显示不一致
  • C++ Bitsets 成员 none():如果没有位被设置则返回true
  • linux下到底如何设置环境变量?在哪设置?详细具体点
  • C++ Strings(字符串) 成员 resize():重新设置字符串的大小
  • 紧急求救各位了:linux下有没有有设置报文最小长度的命令(好像只有设置报文最大长度MTU,通过ifconfig)?
  • Windows7自带防火墙设置:启动,关闭及高级设置
  • 怎么设置在Linux上面设置WEB服务器?请各位高手指教!!!
  • C++ Strings(字符串) 成员 reserve():保留一定容量以容纳字符串(设置capacity值)
  • linux中端口号设置是在哪个配置文件,该如何设置?
  • C++ I/O 成员 setf():设置格式标志
  • 100求救 jrun3.0 里的beans的设置,你登陆我的机器设置


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3