package elte.java2_utikalauz5.gui; /** Példaprogram a {@code BorderLayout} elrendezési stratégia szemléltetésére.

A felhasználói felületen összes lehetséges pozícióba egy nyomógombot raktunk, melyek felirataként a rájuk érvényes elrendezési jellemző (abszolút / relatív formában) jelenik meg. Bármely gombot megnyomva az eltűnik, így tesztelhetjük az elrendezés viselkedését, ha nincs minden komponenshely kitöltve. Az utolsónak megmaradt gomb megnyomásakor pedig visszaáll a kezdőállapot. @link.forrásfájl {@docRoot}/../data/gui/src BorderLayoutTeszt.java @link.letöltés {@docRoot}/../data/gui BorderLayoutTeszt.jar @see java.awt.BorderLayout @since Java 2 Útikalauz programozóknak 5.0 */ class BorderLayoutTeszt extends LayoutTeszt { /** A stratégia 5 komponensének beállítása. @param gomb az új nyomógomb @param felület cél konténer @return a nyomógombhoz tartozó elrendezési jellemző, vagy {@code null} */ Object újgomb( java.awt.Container felület, Gomb gomb ) { gomb.setVonalaz(false); //üres relatív komponenshely keresése java.awt.BorderLayout bl = (java.awt.BorderLayout)elrendezés; if (bl.getLayoutComponent(java.awt.BorderLayout.PAGE_START)==null) return java.awt.BorderLayout.PAGE_START; if (bl.getLayoutComponent(java.awt.BorderLayout.PAGE_END)==null) return java.awt.BorderLayout.PAGE_END; if (bl.getLayoutComponent(java.awt.BorderLayout.LINE_START)==null) return java.awt.BorderLayout.LINE_START; if (bl.getLayoutComponent(java.awt.BorderLayout.LINE_END)==null) return java.awt.BorderLayout.LINE_END; return java.awt.BorderLayout.CENTER; } /** Gomb feliratának beállítása. A feliratra a gomb abszolút és relatív elrendezési pozíciója kerül fel. @param gomb a feliratozandó gomb */ @Override void feliratoz( Gomb gomb ) { gomb.setArány(0); //azonos méretűek lesznek a gombok java.awt.BorderLayout bl = (java.awt.BorderLayout)elrendezés; java.awt.Container felület = gomb.getParent(); String felirat = bl.getConstraints(gomb).toString(); if (bl.getLayoutComponent(felület, java.awt.BorderLayout.NORTH)==gomb) felirat = "NORTH / "+felirat; else if(bl.getLayoutComponent(felület,java.awt.BorderLayout.EAST)==gomb) felirat = "EAST / "+felirat; else if(bl.getLayoutComponent(felület,java.awt.BorderLayout.WEST)==gomb) felirat = "WEST / "+felirat; else if(bl.getLayoutComponent(felület,java.awt.BorderLayout.SOUTH)==gomb) felirat = "SOUTH / "+felirat; gomb.setLabel(felirat); } /** Törölhető nyomógomb lekérdezése. @param gomb az ellenőrzött nyomógomb @return mindig igaz, mert minden gomb törlődhet. */ @Override boolean törlőgomb( Gomb gomb ) { return true; } /** Új gombbal bővítést végző nyomógomb lekérdezése. Ha már csak egy gomb látható, a többi újra felvételre kerül. @param gomb az ellenőrzött nyomógomb @return igaz érték az utolsó gomb esetén. */ @Override boolean bővítőgomb( Gomb gomb ) { if (gomb.getParent().getComponentCount()>1) return false; for (int i=3; --i>=0;) újgomb(gomb.getParent());//a többi komponens újra return true; //felvétele } /** Az elrendezési jellemzők nem változnak meg. @param gomb a megváltoztatandó nyomógomb */ @Override void változógomb( Gomb gomb ) {} /** Konstruktor az elrendezési stratégia megadásával. */ BorderLayoutTeszt() { super( new java.awt.BorderLayout(helykihagyás, helykihagyás) ); } /** A grafikus felhasználói felület felépítése {@code BorderLayout}-ot használva @param felület A felhasználói felületet tartalmazó konténer. @param argumentumok Az indításkor megadott paraméterek. */ public static void felépít( java.awt.Container felület, String argumentumok[]) { argumentumKezelés( argumentumok ); //indítási paraméterek kezelése felépít( new BorderLayoutTeszt(), felület, argumentumok ); } /** A tesztprogram indítása külön ablakban. @param argumentumok Az indításkor megadott paraméterek. */ public static void main( String[] argumentumok ) { felépít( null, argumentumok ); } }