java - Activity 编辑器中的 NetBeans 插件开发用户事件

标签 java netbeans netbeans-platform netbeans-plugins

我正在尝试构建一个 NetBeans 模块,该模块包含一个选项面板(用户必须在其中输入其凭据和首选项)以及一些在主 NetBeans 编辑器 Pane 中跟踪源代码的代码。

目标是通过用户成功登录来激活插件,然后插件将简单地监听预定义的事件,触发其在编辑器中捕获代码。我不希望用户必须单击菜单栏中的某个项目或某个按钮来触发代码的捕获。它必须不引人注目。

我有几个选择。我想让插件收集 Ctrl + S 操作或用户按 Enter 键、上、下、右、左键和/或其他。

但是,如何将这些类型的事件监听器添加到 TopComponent 或 Activity NetBeans 编辑器中,以便跟踪 NetBeans 中的用户 Activity ?如何检测用户何时按下编辑器中的某些键?

最佳答案

我的问题终于解决了。

我使用以下代码片段获取 NetBeans 编辑器的 Activity JTextComponent,然后向其中添加 KeyEventListener,效果非常好。

JTextComponent jtc = EditorRegistry.lastFocusedComponent();

jtc.addKeyListener(new KeyListener() {

        @Override
        public void keyTyped(KeyEvent e) {
            int keycode = e.getKeyCode();
            switch (keycode) {
                case KeyEvent.VK_LEFT:
                    JOptionPane.showMessageDialog(null, "1 Left: " + e.getKeyCode());
                    break;
                case KeyEvent.VK_RIGHT:
                    JOptionPane.showMessageDialog(null, "1 Right: " + e.getKeyCode());
                    break;
                case KeyEvent.VK_DOWN:
                    JOptionPane.showMessageDialog(null, "1 Down: " + e.getKeyCode());
                    break;
                case KeyEvent.VK_UP:
                    JOptionPane.showMessageDialog(null, "1 Up: " + e.getKeyCode());
                    break;
                case KeyEvent.VK_ENTER:
                    JOptionPane.showMessageDialog(null, "Enter: "+e.getKeyCode());
                    break;
            }
        }

        @Override
        public void keyPressed(KeyEvent e) {
            int keycode = e.getKeyCode();
            switch (keycode) {
                case KeyEvent.VK_LEFT:
                    JOptionPane.showMessageDialog(null, "2 Left: " + e.getKeyCode());
                    break;
                case KeyEvent.VK_RIGHT:
                    JOptionPane.showMessageDialog(null, "2 Right: " + e.getKeyCode());
                    break;
                case KeyEvent.VK_DOWN:
                    JOptionPane.showMessageDialog(null, "2 Down: " + e.getKeyCode());
                    break;
                case KeyEvent.VK_UP:
                    JOptionPane.showMessageDialog(null, "2 Up: " + e.getKeyCode());
                    break;
                case KeyEvent.VK_ENTER:
                    JOptionPane.showMessageDialog(null, "Enter: "+e.getKeyCode());
                    break;
            }
        }

        @Override
        public void keyReleased(KeyEvent e) {
            int keycode = e.getKeyCode();
            switch (keycode) {
                case KeyEvent.VK_LEFT:
                    JOptionPane.showMessageDialog(null, "3 Left: " + e.getKeyCode());
                    break;
                case KeyEvent.VK_RIGHT:
                    JOptionPane.showMessageDialog(null, "3 Right: " + e.getKeyCode());
                    break;
                case KeyEvent.VK_DOWN:
                    JOptionPane.showMessageDialog(null, "3 Down: " + e.getKeyCode());
                    break;
                case KeyEvent.VK_UP:
                    JOptionPane.showMessageDialog(null, "3 Up: " + e.getKeyCode());
                    break;
                case KeyEvent.VK_ENTER:
                    JOptionPane.showMessageDialog(null, "Enter: "+e.getKeyCode());
                    break;
            }
        }
    });

因此,该插件现在允许我使用按键事件捕获用户与 Activity NetBeans 代码编辑器的交互。

关于java - Activity 编辑器中的 NetBeans 插件开发用户事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25536517/

相关文章:

java - 将netbeans升级到7.2后出错

java - 如何反序列化Java中隐藏的ServiceProvider类对象?

java - 我们如何将变量从一种方法使用到另一种方法,例如我尝试将一个变量除以另一个变量

java - 等待执行程序服务中的线程完成

java - 将 JPanel 添加到 Netbeans 中的 JFrame

java - 将mysql数据库的两列数据依次打印到jTextfield的最佳方法

java - 在 netbeans 中结合 javafx 和 java se

队列中包含 3 个元素的 Java PriorityQueue 行为

java - org.hibernate.HibernateException 错误

java - 以编程方式设置启动后的外观和感觉