【问题标题】:NetBeans Plugin Development User Events in Active Editor活动编辑器中的 NetBeans 插件开发用户事件
【发布时间】:2014-08-27 20:39:31
【问题描述】:
我正在尝试构建一个 NetBeans 模块,该模块将包含一个选项面板,用户必须在其中输入他们的凭据和首选项,以及一些在 NetBeans 编辑器主窗格中跟踪源代码的代码。
目标是通过用户成功登录来激活插件,然后插件将简单地监听预定义的事件,触发其在编辑器中捕获代码。我不希望用户必须单击菜单栏中的项目或某个按钮来触发代码的捕获。它必须不引人注目。
我有几个选择。我想让插件收集 Ctrl + S 操作或用户按 Enter 键、上、下、右、左键和/ 或其他人。
但是,如何将这些类型的事件侦听器添加到 TopComponent 或活动的 NetBeans 编辑器,以便跟踪 NetBeans 中的用户活动?如何检测用户何时按下编辑器中的某些键?
【问题讨论】:
标签:
java
netbeans
netbeans-platform
netbeans-plugins
【解决方案1】:
我终于解决了我的问题。
我使用下面的 sn-p 代码来获取 NetBeans 编辑器的活动 JTextComponent,然后将 KeyEventListeners 添加到它,它运行良好。
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;
}
}
});
所以这个插件现在允许我使用关键事件捕获用户与活动 NetBeans 代码编辑器的交互。