郁闷的JPopupMenu
来源:互联网 发布:矩阵论 清华大学 pdf 编辑:程序博客网 时间:2024/05/16 10:29
在学习swing的菜单时,想到将主菜单的菜单项直接加到弹出式菜单中,这样可以一石二鸟,一个菜单项就搞定两个地方了。例如下面代码:
但结果却不是想象的那样,弹出式菜单出来了,菜单里面的menuItem1不见了,把两个add方法调换位置,菜单正常了,弹出式菜单又丢了menuItem1。郁闷了一段时间,静下心来想想吧,根据几次运行的结果可以得出,执行add方法加入菜单项时会解除此菜单项原来的关联。最后决定去JDK源代码查查(记得很多高人都说在那里可以学到很多东西)。
JPopupMenu.java中:
那就向上追查super吧,可惜JComponent中什么都没有,继续向上,Container.java中:
还么看到什么实质东西,继续:
呵呵,终于找到了,看来每次add时都要先解除和原来父容器的联系。
偷懒的梦想就此破灭了.........
.........
JMenu menu1 = new JMenu("menu1");
JPopupMenu popupMenu1 = new JPopupMenu();
JMenuItem menuItem1 = new JMenuItem("something");
menu1.add(menuItem1);
popupMenu1.add(menuItem1);
menuItem1.addActionListener(.....);
...........
JMenu menu1 = new JMenu("menu1");
JPopupMenu popupMenu1 = new JPopupMenu();
JMenuItem menuItem1 = new JMenuItem("something");
menu1.add(menuItem1);
popupMenu1.add(menuItem1);
menuItem1.addActionListener(.....);
...........
但结果却不是想象的那样,弹出式菜单出来了,菜单里面的menuItem1不见了,把两个add方法调换位置,菜单正常了,弹出式菜单又丢了menuItem1。郁闷了一段时间,静下心来想想吧,根据几次运行的结果可以得出,执行add方法加入菜单项时会解除此菜单项原来的关联。最后决定去JDK源代码查查(记得很多高人都说在那里可以学到很多东西)。
JPopupMenu.java中:
public JMenuItem add(JMenuItem menuItem) {
super.add(menuItem);
return menuItem;
}
super.add(menuItem);
return menuItem;
}
那就向上追查super吧,可惜JComponent中什么都没有,继续向上,Container.java中:
public Component add(Component comp) {
addImpl(comp, null, -1);
return comp;
}
addImpl(comp, null, -1);
return comp;
}
还么看到什么实质东西,继续:
protected void addImpl(Component comp, Object constraints, int index) {
... ...
... ...
... ...
/* Reparent the component and tidy up the tree's state. */
if (comp.parent != null) {
comp.parent.remove(comp);
if (index > ncomponents) {
throw new IllegalArgumentException("illegal component position");
}
}
... ...
... ...
... ...
}
... ...
... ...
... ...
/* Reparent the component and tidy up the tree's state. */
if (comp.parent != null) {
comp.parent.remove(comp);
if (index > ncomponents) {
throw new IllegalArgumentException("illegal component position");
}
}
... ...
... ...
... ...
}
呵呵,终于找到了,看来每次add时都要先解除和原来父容器的联系。
偷懒的梦想就此破灭了.........
- 郁闷的JPopupMenu
- 关于JPopupMenu的问题
- JPopupMenu的简单使用
- 使用JPopupMenu作为提示以及创建带图像的菜单
- Swing JPopupMenu
- 郁闷的
- 郁闷的。。。
- 郁闷的
- 郁闷的
- 郁闷,异常的郁闷,呵呵~~~~
- 郁闷!不是一般的郁闷
- 郁闷的事情郁闷的解决方法郁闷的结果
- (总结)Swing组件的使用---下拉式菜单(menu),弹出式菜单(JPopupMenu),选项卡窗体(JTabbedPane)
- 工作的郁闷和郁闷的工作
- 郁闷的华硕A3H,郁闷的声卡
- 巧用JPopupMenu(一)
- JPopupMenu类简介
- JSeparator类 JPopupMenu类
- Windows API一日一练(91)GetProcessMemoryInfo函数
- “北漂”小夫妻新婚后的理财计划
- RedHat Linux 安装WebLogic9.2 MP2(图文详解 教程下载)_绝对原创
- C++ string类的一些函数方法
- 和上司沟通必备8个黄金句
- 郁闷的JPopupMenu
- JAVA自学之路
- 加入减肥俱乐部
- 越来越讨厌qq
- response.setHeader 设置详解
- Silverlight 與 ASP.NET 的完美結合法 - 控件篇
- Silverlight 與 ASP.NET 的完美結合法 - 控件篇
- 精彩的瀏覽器戰爭的序幕已拉開
- Silverlight 完全中文解決方案