java - 从 JTextPane 将关键监听器添加到 JPopupMenu 可以,但不能从 JTextArea

标签 java swing popup jtextarea

请看我的示例代码。

JPopupMenu popUp = new JPopupMenu();
popUp.add(new JMenuItem("sample1"));
popUp.add(new JMenuItem("sample2"));

popUp.addKeyListener(new KeyListener() {
    @Override
    public void keyTyped(KeyEvent e) {
        System.out.println("yy");
    }

    @Override
    public void keyPressed(KeyEvent e) {
        System.out.println("yy");
    }

    @Override
    public void keyReleased(KeyEvent e) {
        System.out.println("yy");
    }
});
popUp.setVisible(true);
popUp.show(textPane, 0, 0);
popUp.requestFocus();

当使用 JTextArea 作为弹出窗口的父组件时,相同的代码不起作用。 我的逻辑是将焦点添加到弹出窗口,然后使用它的按键甚至重新填充弹出窗口。

最佳答案

我不太确定您要做什么。您不需要将 KeyListener 添加到弹出窗口。弹出菜单将支持从一个项目移动到另一个项目。

阅读 Bringing Up a Popup Menu 上的 Swing 教程部分获取更多信息和示例。

use it's key pressed even to re-populate the pop-up.

您应该在弹出窗口可见之前设置弹出窗口的项目。

Adding key listener to JPopupMenu from a JTextPane works, but not from JTextArea

然后发一个SSCCE演示了工作代码和非工作代码。如果我们了解您的意图,那么我们或许能够为这两个组件提供更好的替代方案。

关于java - 从 JTextPane 将关键监听器添加到 JPopupMenu 可以,但不能从 JTextArea,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36428627/

相关文章:

java - 如何使用控制反转在java中创建即插即用代码?

java - 如何在 JFrame 中组织我的 JPanel?

java - 无法在 ActionListener 中初始化类...请帮忙!

javascript - 更改链接颜色弹出窗口

javascript - IE 中的自关闭弹出窗口——如何获得正确的 onBlur 行为?

android - 将 Activity 用作对话框

java - 使用 JFileChooser 在 Java 中读/写程序

JavaFX拖动旋转节点

java - 我无法弄清楚的扫描仪错误 : NoSuchElementException

java - SwingWorker 不会在自定义对话框面板中没有 Thread.sleep() 的情况下更新 JProgressBar