现在有一个场景,在菜单栏的菜单中与界面的右键弹出菜单中添加同一个菜单项. 
以方便控制此菜单项的状态(Enable/Visible)时,在两个菜单中都能同时体现. 但是Java 的Container机制中,一个组件对象只能添加到一个容器中. 
在往另一个容器中添加此组件对象时,会从前面持有此组件的父组件中将此组件对象移除掉. 请问有没有办法能做到在两个容器中同时持有同一组件的办法呢?

解决方案 »

  1.   

    COPY一个对象一起管理不行么?
      

  2.   

    使用 Action.
    public javax.swing.JMenuItem add(javax.swing.Action);
      

  3.   


    楼上的方法现在也不能满足我这个需求.
    add(Action) 会自动创建一个新的JMenuItem,这样在控制菜单项的Enable状态时能做到同步,
    但是如果设置菜单栏中或者弹出菜单中的菜单项的Visible状态时,只能更新其中一个菜单项的状态.另一个是控制不到的.这个就需要多余的操作了.
      

  4.   

    Action怎么实现呢?Action可以对应多个组件,但是不至于A组件调用Action,拥有相同Action的B组件也会同时调用啊?
    我以前做这个直接COPY了一组菜单项放进弹出菜单,把两份对象扔进一个向量一起管理的.
    菜鸟思路,请高手指教