【问题标题】:In Java, how to make shortcuts that similar to Emacs?在 Java 中,如何制作类似于 Emacs 的快捷方式?
【发布时间】:2011-06-17 12:02:22
【问题描述】:

我想知道如何在我的 Java 应用程序中添加类似于 Emacs 的快捷方式。例如 C-x C-f 和 C-x b。

谢谢。

【问题讨论】:

  • 在按键后需要一个状态引擎,在这个问题中没有真正的“Java”......
  • 您的 Java 应用程序在做什么?您是在谈论可变参数还是如何监听按键?
  • Emac 的快捷键可以通过配置来改变。您可能对向菜单项添加助记符和加速器感兴趣,这将允许您使用按键来导航菜单。
  • @Atreys 我认为他正在尝试向他正在创建的 Java 应用程序添加快捷方式。他并没有试图改变 Emacs 本身的快捷方式。
  • @kensen 是的。我的意思是在所有可配置的荣耀(或血腥?)中模拟 Emacs 的快捷方式系统将是一项艰巨的任务

标签: java keyboard-shortcuts shortcut


【解决方案1】:

Java 提供了一种识别修饰符键的方法。 我的意思是修饰键

  1. Alt -- e.isAltDown();
  2. Ctrl -- e.isControlDown();
  3. Shift -- e.isShiftDown()

这些可以与键盘上的其他普通按键按钮配对,以识别是否已按下组合。

if( (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_X) )
{

}

e.getModifiers() 可用于识别修饰符以及单击的鼠标按钮。这将返回位掩码。

请看这里。
http://www.leepoint.net/notes-java/GUI-lowlevel/keyboard/keyboard.html

我会将它用于 Ctrl。这是过于简化的代码,但你会明白的。

   JTextField sampleTxtFld= new JTextField();

   sampleTxtFld.addKeyListener(new KeyAdapter() {


          public void keyPressed(KeyEvent e) 
         {
              if((e.isControlDown() && e.getKeyCode() == KeyEvent.VK_X)
              {
                    //identifies whether Ctrl + X has been pressed
                    // do some action here
              }
         }

        public void keyReleased(KeyEvent e) 
        {
              //some key released code here
        }
         public void keyTyped(KeyEvent e) {
         }


   });

【讨论】:

    【解决方案2】:

    据我所知,EMACS 是一个编辑器。如果要更改 Swing 文本组件上的 KeyStrokes 以进行编辑命令,则需要使用 Key Bindings。您可以使用现有的文本操作,但只需将它们绑定到不同的按键。请参阅Key Bindings 以获取所有默认绑定的列表以及如何重新绑定和操作的一些示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-04
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 2019-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多