为按钮创建键盘快捷键 [英] Create a keyboard shortcut for a button

查看:134
本文介绍了为按钮创建键盘快捷键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 JTable ,它有一个删除按钮来删除它的行。

I have a JTable that has a delete button to delete its rows.

我想创建一个快捷方式,例如当用户选择一行并按下键盘上的删除按钮时,该行应该被删除。

I want to create a shortcut, for example when user selects a row and presses the 'Delete' button on keyboard , that line should be deleted.

我的<$ c $删除了我的行c> JButton1 完美。

        if (e.getSource() == KeyEvent.VK_DELETE) {

           // Delete row Method
    }

但它没有不行。

推荐答案

我不知道究竟是什么问题,因为你提供的代码太少了。但是,您不能使用 getSource()来测试键入(按下或释放)的键。使用 getKeyChar() getKeyCode()

I don't know what is the exact problem because you provide too few code. However, you can't use getSource() to test which key is typed (pressed, or released). Use getKeyChar() and getKeyCode().

以下是我的代码说明:


  1. 您需要添加 KeyListener 到组件(当然)

  2. 组件必须具有焦点
  1. You need to add a KeyListener to a component(of course)
  2. The component must have focus

  1. 组件必须可聚焦(将焦点设置为真)

  2. 组件需要请求焦点


  • 覆盖 keyTyped keyPressed keyReleased 检索 KeyEvent

  • Override keyTyped keyPressed or keyReleased to retrieve KeyEvent


    1. 要检查在 keyTyped 中键入的键,请使用 getKeyChar()

    2. 检查 keyPressed 和<$ c中按下或释放的键$ c> keyReleased ,使用 getKeyCode()

    1. To check which key is typed in keyTyped, use getKeyChar()
    2. To check which key is pressed or released in keyPressed and keyReleased, use getKeyCode()








  • import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    
    public class Test {
        public static void main(String[] args) {
            JFrame f = new JFrame();
            f.setSize(new Dimension(410, 330));
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.getContentPane().setLayout(null);
            JPanel panel = new JPanel();
            panel.setBackground(Color.GREEN);
            panel.setBounds(50, 50, 300, 200);
    
            panel.addKeyListener(new MyKeyListener()); // add KeyListener
            panel.setFocusable(true); // set focusable to true
            panel.requestFocusInWindow(); // request focus
    
            f.getContentPane().add(panel);
            f.setVisible(true);
        }
    
        static class MyKeyListener extends KeyAdapter {
            @Override
            public void keyTyped(KeyEvent e) {
                if (e.getKeyChar() == '\177') {
                    // delete row method (when "delete" is typed)
                    System.out.println("Key \"Delete\" Typed");
                }
            }
    
            @Override
            public void keyPressed(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_DELETE) {
                    // delete row method (when "delete" is pressed)
                    System.out.println("Key \"Delete\" Pressed");
                }
            }
    
            @Override
            public void keyReleased(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_DELETE) {
                    // delete row method (when "delete" is released)
                    System.out.println("Key \"Delete\" Released");
                }
            }
        }
    }
    

    这篇关于为按钮创建键盘快捷键的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆