A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张庚 中级黑马   /  2013-2-6 14:57  /  1032 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package test;

import java.awt.*;

public class a extends Frame {

/**
* @param args
*/
MenuBar menubar;
Menu menu1,menu2;
MenuItem menuitem1,menuitem2;
a(){
Toolkit tool=getToolkit();
Dimension dim=tool.getScreenSize();
setBounds(0,0,dim.width/2,dim.height/2);
menubar=new MenuBar();
menu1=new Menu("文件");
menu2=new Menu("文件1");
menuitem1=new MenuItem("打开");
menuitem2=new MenuItem("保存");
menu1.add(menu2);
menu1.add(menuitem1);//请问这个menuitem1为什么没有包含在menu1中
menu2.add(menuitem1);
menu2.add(menuitem2);
menubar.add(menu1);
menubar.add(menu2);//为什么menubar,add了menu2,前面的menu1.add(menu2)就不包含menu2了
setMenuBar(menubar);
setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
a b=new a();
}

}

2 个回复

倒序浏览
menu1.add(menu2);
                menu1.add(menuitem1);
                // menuitem1是不允许同时被放在两个menu下的,就像人不可能同是在两个房间一样。
                //以你最后一次添加的为准
                menu2.add(menuitem1);
                menu2.add(menuitem2);
                menubar.add(menu1);
                menubar.add(menu2);//
                //其实你第二个问题和第一个问题,是同一类问题,java确保了这种单一包含
                //关系,才不至于显示混乱。一个菜单怎么可能既是另一个菜单的子菜单又是其
                //同级菜单,这是不符合界面显示的逻辑的。
                //为什么menubar,add了menu2,前面的menu1.add(menu2)就不包含menu2了
                setMenuBar(menubar);
回复 使用道具 举报
MenuBar , MenuItem, 还有Menu 三个吧??   
MenuBar 是菜单栏.  相当于菜单项和菜单的承载体..  
所有MenuBar可以包含MenuItem 和Menu.
而Menu是MenuItem的子扩展类.   
可以包含Menu 和MenuItem

Menu是包含有下级内容的菜单.
而MenuItem就是一个菜单项,不能包含任何菜单或者菜单项了.

因为一个菜单类是一个对象,所以想要创建同样的对象在不同位置,就需要多个对象.
因为它不可能即在这里又在那里..
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马