java - 如何关闭 NetBeans 向导面板中的关键监听器?

标签 java swing netbeans netbeans-platform netbeans-plugins

我为 NetBeans IDE 开发了一个简单的插件。我对向导面板的 TopComponenet 上的默认按键事件有一点问题:

例如:

我有一个包含 3 个步骤的向导。在第二步中,我有一个 JTextField,用户可以在其中输入一些值,然后在该文本字段下方出现一个 JList。一切正常,直到用户从列表中选择某个值,然后按 ENTER 键,然后我的面板转到下一步 3。我附加一个关键监听器以列出如下内容:

list = new JList(new PackagesListModel());
list.addKeyListener(new KeyAdapter() {
    @Override
    public void keyReleased(java.awt.event.KeyEvent evt) {
        int keyCode = evt.getKeyCode();
        if(keyCode == KeyEvent.VK_ENTER){
            JList list = (JList)evt.getSource();
            Object selectedPackage = list.getSelectedValue();
            typePackageField.setText((String)selectedPackage);
        }
    }
});

但此监听器可能是在向导上 TopComponenet 的默认监听器之后调用的。如何防止使用 ENTER 键将用户移动到下一步?

我不想执行此操作(当用户按 ENTER 后他们会转到下一步)。

更新:

转发给 Kraal 答案:

问题是我不知道在哪里可以找到 JButton Next(关闭监听器)。这听起来很奇怪,但我是怎么写的。我正在使用 Netbeans Plaform WizzardDescriptor 生成 Wizzard(包含 3 个步骤)。 WizzardDescriptor 来自包:

  org.openide.WizardDescriptor; // Dialogs API

我向他提供了 3 个面板实例:WizardDescriptor.Panel 来自同一个包:

  org.openide.WizardDescriptor // Dialogs API

看起来像:

    panels = new ArrayList<>();
    panels.add(new LayoutWizardPanel1(selectedLayout));
    panels.add(new LayoutWizardPanel2(selectedLayout));
    panels.add(new LayoutWizardPanel3(selectedLayout));
    WizardDescriptor wiz = new WizardDescriptor(new WizardDescriptor.ArrayIterator<>(panels));

之后会生成如下内容:

enter image description here

在我的程序中我可以访问 WizardDescriptor

 http://bits.netbeans.org/dev/javadoc/org-openide-dialogs/org/openide/WizardDescriptor.html

最佳答案

我不确定,但如果您知道是哪个 JComponent 导致此行为,请尝试以下操作:

suspectedComponent.getInputMap().put(KeyStroke.getKeyStrokeForEvent(KeyEvent.VK_ENTER),"none");

检查哪些击键绑定(bind)在 JComponent 上:

suspectedComponent.getInputMap().keys()

或者在父InputMap中:

suspectedComponent.getInputMap().getParent().keys()

参见 docs for InputMap了解详情。

关于java - 如何关闭 NetBeans 向导面板中的关键监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26693850/

相关文章:

java - 我设计了一个蜘蛛,但无法传递按钮单击时的值

php - 如何在 NetBeans 中添加带有点 (blade.php) 的自定义文件扩展名?

java - SSL 证书升级导致问题

java - 如何修复无法使用 get/set 方法的类之间的空点异常?

java - 如何在java swing中的两点之间绘制椭圆或椭球体

java - 将数据库中的图像添加到 JTable

java - com.google 包不存在

java - Netbeans 平台 : InstalledFileLocator

java - splunk 将堆栈跟踪的每一行报告为单独的事件

java - 通过链接更改 JLABEL 的颜色