我正在尝试构建一个 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/