考慮下面的代碼:刪除菜單項遠程
mntmProfilesDelete.get(index).addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
JMenuItem eMntm = (JMenuItem) e.getSource();
String text = eMntm.getText();
Component[] mns = mnDelete.getParent().getComponents();
for(Component mn : mns)
{
System.err.println((String)(((JMenu)mn).getText()));
if(mn instanceof JMenu && ((JMenu)mn).getText().toLowerCase().equals("open"))
{
System.err.println((String)(((JMenu)mn).getText()));
Component[] mntms = ((JMenu) mn).getComponents();
for(Component mntm : mntms)
{
System.err.println((String)(((JMenu)mn).getText())+"\n"+(String)(((JMenuItem)mntm).getText()));
if(mntm instanceof JMenuItem && ((JMenuItem)mntm).getText().toLowerCase().equals(text.toLowerCase()))
{
System.err.println((String)(((JMenu)mn).getText())+"\n"+(String)(((JMenuItem)mntm).getText()));
((JMenu)mn).remove((JMenuItem)mntm);
}
}
}
}
mnDelete.remove(eMntm);
}
}
我使用刪除兩個菜單項,如低於此:
(jmenu)father
(jmenu)open
(jmenuitem)item1
(jmenuitem)item2
etc
(jmenu)delete
(jmenuitem)item1
(jmenuitem)item2
etc
動作監聽連接下面-item1- -delete-
由於某些原因,-item1-低於-open-不會使用上述代碼刪除。我似乎無法理解爲什麼。
非常感謝。
字符串演員陣容是因爲奇怪的日食錯誤,不知何故將其關閉。我的問題是它永遠不會進入For(mntm:mntms)循環,它甚至不能刪除。最後刪除(emntm)完美地工作,刪除item1下面刪除菜單 – Ramin 2014-09-20 16:16:22