无法使用 setVisible() 和 setEnabled() 方法禁用 JPopupMenu。通过这些方法可以毫无问题地处理单个 JMenuItem,但整个菜单不会以任何方式对它们做出反应。如何使上下文菜单仅在需要时出现在右键单击时?什么方法能够完全启用和禁用它?
import javax.swing.*;
public class PopupMenus extends JFrame {
public PopupMenus() {
super("PopupMenus");
setDefaultCloseOperation( EXIT_ON_CLOSE );
JPopupMenu popup = createPopupMenu();
((JComponent)getContentPane()).
setComponentPopupMenu(popup);
setSize(300, 200);
popup.setVisible(false); // Эти строки можно удалить.
popup.setEnabled(false); // Они не влияют ни на что.
setVisible(true);
}
private JPopupMenu createPopupMenu() {
JPopupMenu pm = new JPopupMenu();
JMenuItem good = new JMenuItem("Один");
JMenuItem excellent = new JMenuItem("Два");
pm.add(good);
pm.add(excellent);
return pm;
}
public static void main(String[] args) {
SwingUtilities.invokeLater(
PopupMenus::new);
}
}
字符串
popup.setVisible(false);
popup.setEnabled(false);
不影响上下文菜单的外观。无论如何,它会在您右键单击时出现。需要做什么才能禁用和启用显示整个上下文菜单的功能?
画了一个解决方案。它只是需要
setComponentPopupMenu(null)完成。