大家好,
我只是想问一下JMenu.addSeparator()
在调用后是否可以删除?例如,在我的表单中,有一个菜单栏,菜单栏中有三个 JmenuItems
,每个项目都有 JMenu.addSeparator()
。我想要做的是,如果不同的用户登录,我想要 setVisible(false)
JMenuItem
之一,因为该特定用户未授权使用该 JMenuItem
。问题是当我setVisible(false)
其中一个JMenuItem
时,JMenu.addSeparator()
仍然存在,这看起来有点尴尬,因为有两个 JMenu.addSeparator()
中间不存在 JMenuItem
。希望你能帮助我解决这个问题。
提前致谢
最佳答案
您有两种可能的解决方案...
你可以...
删除菜单内容并根据用户可以执行的操作重新构建...
menu.removeAll();
// Add menu items back in...
// Personally, I'd have some method that could return back all
// the JMenuItems that could appear on this menu based on the
// the user...
这将是我首选的解决方案...
你可以...
根据当前用户实际可以执行的操作隐藏/显示菜单项,然后删除所有相邻出现的 JSeparator
,例如...
Component last = null;
for (Component comp : menu.getComponents()) {
if (comp instanceof JSeparator && last instanceof JSeparator) {
menu.remove(comp);
} else {
last = comp;
}
}
就我个人而言,我知道我更喜欢哪个,并且通常会产生一致的结果......
关于java - 如何在调用 JMenu.addSeparator() 后删除它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21743599/