从JTextPane向JPopupMenu添加键侦听器可以正常工作,但不能从JTextArea添加

时间:2016-04-05 14:02:50

标签: 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作为弹出窗口的父组件时,相同的代码不起作用。 我的逻辑是将重点放在弹出窗口上,然后使用它的按键来重新弹出弹出窗口。

2 个答案:

答案 0 :(得分:4)

我不确定你要做什么。您不需要将KeyListener添加到弹出窗口。弹出菜单将支持逐项移动。

阅读Bringing Up a Popup Menu上Swing教程中的部分,了解更多信息和示例。

  

使用它的按键甚至可以重新填充弹出窗口。

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

  

从JTextPane向JPopupMenu添加关键侦听器,但不是从JTextArea

然后发布演示工作代码和非工作代码的SSCCE。如果我们了解您尝试做什么,那么我们可能能够为这两个组件提供更好的替代方案。

答案 1 :(得分:0)

以下适用于我。你能详细说明弹出逻辑的重新填充吗?

QRunnble::run()