对着thinking in java敲得一段AWT代码。
//Menu1.java
import java.awt.*;
public class Menu1 extends Frame {
String[] flavors={
"Chocolate","Strawberry",
"Vanilla Fudge Swirl","Mint Chip",
"Mocha Almond Fudge","Rum Raisin",
"Praline Cream","Mud pie"
};
TextField t=new TextField("No flavor",30);
MenuBar mb1=new MenuBar();
//MenuBar 类封装绑定到框架的菜单栏的平台概念。为了将该菜单栏与 Frame 对象关联,可以调用该框架的 setMenuBar 方法。
Menu f=new Menu("File");
Menu m=new Menu("Flavors");
Menu s=new Menu("Safety");
CheckboxMenuItem[] safety={
new CheckboxMenuItem("Guard"),
new CheckboxMenuItem("Hide")
};
MenuItem[] file={
new MenuItem("Open"),
new MenuItem("Exit")
};
MenuBar mb2=new MenuBar();
Menu fooBar=new Menu("fooBar");
MenuItem[] other={
new MenuItem("Foo"),
new MenuItem("Bar"),
new MenuItem("Baz")
};
Button b=new Button("Seap Menus");
public Menu1(){
for(int i=0;i<flavors.length;i++){
m.add(new MenuItem(flavors[i]));
if((i+1)%3==0){
m.addSeparator();//将一个分隔线或连字符添加到菜单的当前位置。
}
}
for(int i=0;i<safety.length;i++){
s.add(safety[i]);
}
f.add(s); //将safety这个菜单,加到file里面
for(int i=0;i<file.length;i++){
f.add(file[i]);
}
mb1.add(f);
mb1.add(m);
setMenuBar(mb1);
t.setEditable(false);
add("Center",t);
add("North",b);
for(int i=0;i<other.length;i++){
fooBar.add(other[i]);
}
mb2.add(fooBar);
}
public boolean handleEvent(Event evt){
if(evt.id==Event.WINDOW_DESTROY){
System.exit(0);
}
else
return super.handleEvent(evt);
return true;
}
public boolean action(Event evt, Object arg){
if(evt.target.equals(b)){
MenuBar m=getMenuBar();
if(m==mb1){
setMenuBar(mb2);
}
else if(m==mb2){
setMenuBar(mb1);
}
}
else if(evt.target instanceof MenuItem){
if(arg.equals("Open")){
String s=t.getText();
boolean chosen=false;
for(int i=0;i<flavors.length;i++){
if(s.equals(flavors[i])){