请参阅我的示例代码。
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
作为弹出窗口的父组件时,相同的代码不起作用。
我的逻辑是将重点放在弹出窗口上,然后使用它的按键来重新弹出弹出窗口。
答案 0 :(得分:4)
我不确定你要做什么。您不需要将KeyListener添加到弹出窗口。弹出菜单将支持逐项移动。
阅读Bringing Up a Popup Menu上Swing教程中的部分,了解更多信息和示例。
使用它的按键甚至可以重新填充弹出窗口。
您应该在弹出窗口可见之前设置弹出窗口的项目。
从JTextPane向JPopupMenu添加关键侦听器,但不是从JTextArea
然后发布演示工作代码和非工作代码的SSCCE。如果我们了解您尝试做什么,那么我们可能能够为这两个组件提供更好的替代方案。
答案 1 :(得分:0)
以下适用于我。你能详细说明弹出逻辑的重新填充吗?
QRunnble::run()