如何在Java中创建类似于Emacs的快捷方式?

3

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

谢谢。


6
需要一个跟随按键的状态引擎,这个问题跟Java无关。 - Kartoch
你的Java应用程序在做什么?你是在谈论可变参数,还是如何监听按键事件? - John Kane
Emacs的快捷键可以通过配置进行更改。您可能会有兴趣为菜单项添加助记符和加速器,这将允许您使用按键来导航菜单。 - Atreys
@Atreys 我认为他试图向他正在创建的Java应用程序添加快捷方式。他并没有试图更改Emacs本身的快捷方式。 - kensen john
@kensen 确实。我的意思是,在所有可配置的荣耀(或血腥?)中模拟Emacs的快捷键系统将是一项相当大的任务。 - Atreys
显示剩余2条评论
2个回答

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

0

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) {
         }


   });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接