| 发表于:2007-03-31 12:45:152楼 得分:0 |
//转高手帖子,仅供参考 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(); menu f = new menu( "file "); menu m = new menu( "flavors "); menu s = new menu( "safety "); // alternative approach: checkboxmenuitem[] safety = { new checkboxmenuitem( "guard "), new checkboxmenuitem( "hide ") }; menuitem[] file = { new menuitem( "open "), new menuitem( "exit ") }; // a second menu bar to swap to: menubar mb2 = new menubar(); menu foobar = new menu( "foobar "); menuitem[] other = { new menuitem( "foo "), new menuitem( "bar "), new menuitem( "baz "), }; button b = new button( "swap menus "); public menu1() { for(int i = 0; i < flavors.length; i++) { m.add(new menuitem(flavors[i])); // add separators at intervals: if((i+1) % 3 == 0) m.addseparator(); } for(int i = 0; i < safety.length; i++) s.add(safety[i]); f.add(s); 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); // set up the system for swapping menus: 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])) chosen = true; if(!chosen) t.settext( "choose a flavor first! "); else t.settext( "opening "+ s + ". mmm, mm! "); } else if(evt.target.equals(file[1])) system.exit(0); // checkboxmenuitems cannot use string // matching; you must match the target: else if(evt.target.equals(safety[0])) t.settext( "guard the ice cream! " + "guarding is " + safety[0].getstate()); else if(evt.target.equals(safety[1])) t.settext( "hide the ice cream! " + "is it cold? " + safety[1].getstate()); else t.settext(arg.tostring()); } else return super.action(evt, arg); return true; } public static void main(string[] args) { menu1 f = new menu1(); f.resize(300,200); f.show(); } } | | |
|