package elte.java2_utikalauz5.gui; /** A fejezet példaprogramjainak összefoglalása menük segítségével. @link.forrásfájl {@docRoot}/../data/gui/src MenuTeszt.java @link.letöltés {@docRoot}/../data/gui MenuTeszt.jar @see java.awt.Menu @since Java 2 Útikalauz programozóknak 1.3 */ class MenuTeszt implements java.awt.event.ActionListener, java.awt.event.ItemListener, java.awt.event.AWTEventListener { static { ToolkitTeszt.main( null ); } /** Program főablaka */ private static java.awt.Frame keret = new AblakTeszt.Ablak("Menük tesztje"); /** A tesztprogram indítása. @param argumentumok Az indításkor megadott paraméterek. */ public static void main(String[] argumentumok) { MenuTeszt teszt = new MenuTeszt(argumentumok); keret.setVisible(true); } /** Kiválasztható menüpontok nyilvántartása */ private java.util.Vector példamenük = new java.util.Vector(); /** Példaprogramokat tartalmazó felbukkanó menü */ private java.awt.PopupMenu felbukkanómenü=new java.awt.PopupMenu("Példák"); /** Példaprogram menüpontjainak előállítása. @param osztály A példaprogram osztálya @param menü A példaprogram menüpontját tartalmazó szülőmenü @param összmenü Az összes példaprogramot tartalmazó legördülő menü @param gyorsítóbillentyű A menüponthoz tartozó gyorsítóbillentyű @param shift megadásakor a Shift is hozzátartozik a gyorsítóbillentyűhöz */ private void példa( Class osztály,java.awt.Menu menü,java.awt.Menu összmenü, int gyorsítóbillentyű, Object... shift ) { java.awt.MenuItem menüpont=new java.awt.MenuItem(osztály.getSimpleName() , new java.awt.MenuShortcut(gyorsítóbillentyű, shift.length>0)); menü.add( menüpont ); //indító menüpont menüpont.addActionListener( this ); java.awt.CheckboxMenuItem példamenü = new java.awt.CheckboxMenuItem( osztály.getSimpleName() ); //kiválasztható menüpont példamenük.add( példamenü ); felbukkanómenü.add( példamenü ); //a felbukkanó menühöz példamenü.addItemListener( this ); példamenü = new java.awt.CheckboxMenuItem( osztály.getSimpleName() ); példamenük.add( példamenü ); összmenü.add( példamenü ); //és az összes példaprogram menüjéhez példamenü.addItemListener( this ); } /** Konstruktor az indítási paraméterekkel. @param argumentumok Az indítási paraméterek */ private MenuTeszt(String[] argumentumok) { keret.setLayout( new java.awt.CardLayout() ); keret.add( felbukkanómenü ); keret.getToolkit().addAWTEventListener( this, //egérgombfigyelés java.awt.AWTEvent.MOUSE_EVENT_MASK ); //a felbukkanó menühöz java.awt.MenuBar menüsor = new java.awt.MenuBar(); keret.setMenuBar(menüsor); java.awt.Menu példák = new java.awt.Menu("Példaprogramok", true); //fő menüpontok felépítése java.awt.Menu menü = new java.awt.Menu("Eseménykezelés"); menüsor.add(menü); példa(EsemenyTeszt.class, menü, példák, java.awt.event.KeyEvent.VK_E); java.awt.Panel panel = new java.awt.Panel(null); EsemenyTeszt.felépít( panel, argumentumok ); keret.add( EsemenyTeszt.class.getSimpleName(), panel ); példa(FokuszTeszt.class, menü, példák, java.awt.event.KeyEvent.VK_F); panel = new java.awt.Panel(null); FokuszTeszt.felépít( panel, argumentumok ); keret.add( FokuszTeszt.class.getSimpleName(), panel ); példa(IMTeszt.class, menü, példák, java.awt.event.KeyEvent.VK_I); panel = new java.awt.Panel(null); IMTeszt.felépít( panel, argumentumok ); keret.add( IMTeszt.class.getSimpleName(), panel ); menü.addSeparator(); példa(RoboTeszt.class, menü, példák, java.awt.event.KeyEvent.VK_R); panel = new java.awt.Panel(null); RoboTeszt.felépít( panel, argumentumok ); keret.add( RoboTeszt.class.getSimpleName(), panel ); menü = new java.awt.Menu("Megjelenítés"); menüsor.add(menü); példa(CanvasPaintTeszt.class,menü,példák,java.awt.event.KeyEvent.VK_C, true); panel = new java.awt.Panel(null); CanvasPaintTeszt.felépít( panel, argumentumok ); keret.add( CanvasPaintTeszt.class.getSimpleName(), panel ); példa(PehelyPaintTeszt.class,menü,példák,java.awt.event.KeyEvent.VK_P); panel = new java.awt.Panel(null); PehelyPaintTeszt.felépít( panel, argumentumok ); keret.add( PehelyPaintTeszt.class.getSimpleName(), panel ); menü = new java.awt.Menu("Elrendezés"); menüsor.add(menü); példa(NullLayoutTeszt.class,menü,példák,java.awt.event.KeyEvent.VK_N); panel = new java.awt.Panel(null); NullLayoutTeszt.felépít( panel, argumentumok ); keret.add( NullLayoutTeszt.class.getSimpleName(), panel ); példa(BorderLayoutTeszt.class,menü,példák,java.awt.event.KeyEvent.VK_B); panel = new java.awt.Panel(null); BorderLayoutTeszt.felépít( panel, argumentumok ); keret.add( BorderLayoutTeszt.class.getSimpleName(), panel ); példa(FlowLayoutTeszt.class,menü,példák,java.awt.event.KeyEvent.VK_F, true); panel = new java.awt.Panel(null); FlowLayoutTeszt.felépít( panel, argumentumok ); keret.add( FlowLayoutTeszt.class.getSimpleName(), panel ); példa(GridLayoutTeszt.class,menü,példák,java.awt.event.KeyEvent.VK_G); panel = new java.awt.Panel(null); GridLayoutTeszt.felépít( panel, argumentumok ); keret.add( GridLayoutTeszt.class.getSimpleName(), panel ); példa(GridBagLayoutTeszt.class, menü, példák, java.awt.event.KeyEvent.VK_G, true); panel = new java.awt.Panel(null); GridBagLayoutTeszt.felépít( panel, argumentumok ); keret.add( GridBagLayoutTeszt.class.getSimpleName(), panel ); példa(ScrollPaneTeszt.class, menü, példák, java.awt.event.KeyEvent.VK_S, true); panel = new java.awt.Panel(null); ScrollPaneTeszt.felépít( panel, argumentumok ); keret.add( ScrollPaneTeszt.class.getSimpleName(), panel ); menü = new java.awt.Menu("Felületelemek"); menüsor.add(menü); példa(FaktorialisGUI.class, menü, példák, java.awt.event.KeyEvent.VK_EXCLAMATION_MARK); panel = new java.awt.Panel(null); FaktorialisGUI.felépít( panel, argumentumok ); keret.add( FaktorialisGUI.class.getSimpleName(), panel ); menü.addSeparator(); java.awt.Menu almenü = new java.awt.Menu("Komponensek"); menü.add( almenü ); példa(TobbSorosCimke.class, almenü,példák,java.awt.event.KeyEvent.VK_T); panel = new java.awt.Panel(null); TobbSorosCimke.felépít( panel, argumentumok ); keret.add( TobbSorosCimke.class.getSimpleName(), panel ); példa(CheckboxTeszt.class, almenü, példák,java.awt.event.KeyEvent.VK_C); panel = new java.awt.Panel(null); CheckboxTeszt.felépít( panel, argumentumok ); keret.add( CheckboxTeszt.class.getSimpleName(), panel ); példa(ListaTeszt.class, almenü, példák, java.awt.event.KeyEvent.VK_L); panel = new java.awt.Panel(null); ListaTeszt.felépít( panel, argumentumok ); keret.add( ListaTeszt.class.getSimpleName(), panel ); példa(ScrollbarTeszt.class, almenü,példák,java.awt.event.KeyEvent.VK_S); panel = new java.awt.Panel(null); ScrollbarTeszt.felépít( panel, argumentumok ); keret.add( ScrollbarTeszt.class.getSimpleName(), panel ); java.awt.MenuItem menüpont = new java.awt.MenuItem( ScrollPaneTeszt.class.getSimpleName()); menü.add( menüpont ); menüpont.addActionListener( this ); menüsor.setHelpMenu( példák ); megmutat(EsemenyTeszt.class.getSimpleName()); //kezdő állapot beállítása } /** Menüpont kiválasztása. @param esemény A menüpont kiválasztásának eseménye */ public void actionPerformed( java.awt.event.ActionEvent esemény ) { megmutat( esemény.getActionCommand() ); } /** Kiválasztható menüpont kiválasztása. @param esemény A menüpont kiválasztásának eseménye */ public void itemStateChanged( java.awt.event.ItemEvent esemény ) { if (esemény.getStateChange()==java.awt.event.ItemEvent.SELECTED) megmutat( ((java.awt.CheckboxMenuItem)esemény.getSource()). getActionCommand() ); else ((java.awt.CheckboxMenuItem)esemény.getSource()).setState(true); } /** Globális egéreseményfigyelés a felbukkanó menü előhívásához. @param esemény A bekövetkezett egéresemény */ public void eventDispatched( java.awt.AWTEvent esemény ) { if (RoboTeszt.lejátsz) return; java.awt.event.MouseEvent egéresemény=(java.awt.event.MouseEvent)esemény; if (egéresemény.isPopupTrigger()) felbukkanómenü.show( //menü előhívása egéresemény.getComponent(), egéresemény.getX(), egéresemény.getY() ); } /** Példaprogram mutatása. @param példa A példaprogram osztályának neve */ private void megmutat( String példa ) { keret.setTitle("MenüTeszt - "+példa); //fejléc beállítása ((java.awt.CardLayout)keret.getLayout()).show(keret, példa);//példamutat for (java.awt.CheckboxMenuItem példamenüpont : példamenük) //menüjelölés példamenüpont.setState(példa.equals(példamenüpont.getActionCommand())); } }