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

Minden gomb elrendezési jellemzőit véletlenszerűen állítja be, felhasználva a gombokra jellemző arányszámot.
@link.forrásfájl {@docRoot}/../data/gui/src GridBagLayoutTeszt.java
@link.letöltés {@docRoot}/../data/gui GridBagLayoutTeszt.jar
@see java.awt.GridBagLayout
@since Java 2 Útikalauz programozóknak 5.0
*/
class GridBagLayoutTeszt extends LayoutTeszt {
/**
Újonnan felkerülő nyomógombhoz tartozó elrendezési jellemző lekérdezése.
@param gomb az új nyomógomb
@param felület cél konténer
@return a nyomógombhoz tartozó elrendezési jellemző, vagy {@code null}
*/
@Override
Object újgomb( java.awt.Container felület, Gomb gomb ) {
gomb.setVonalaz(false); //nincs igazítás
java.awt.GridBagConstraints gbc = new java.awt.GridBagConstraints();
beállít( felület, gomb, gbc );
return gbc;
}
/**
Nyomógomb elrendezési jellemzőinek megváltoztatása. Meghívása előtt a
paraméterként kapott gombon már beállításra került egy új arányszám.
@param gomb a megváltoztatott nyomógomb
*/
@Override
void változógomb( Gomb gomb ) {
java.awt.GridBagLayout gbl = (java.awt.GridBagLayout)elrendezés;
java.awt.GridBagConstraints gbc = gbl.getConstraints(gomb);
beállít(gomb.getParent(), gomb, gbc); //elrendezési jellemző módosítása
gbl.setConstraints( gomb, gbc ); //és újra alkalmazása
}
/**
Nyomógomb elrendezési jellemzőinek véletlenszerű beállítása.
@param felület cél konténer
@param gomb a beállítandó nyomógomb
@param gbc a beállítandó elrendezési jellemző
*/
private void beállít( java.awt.Container felület, Gomb gomb,
java.awt.GridBagConstraints gbc ) { //rácskoordináták
gbc.gridx = véletlen.nextInt(felület.getComponentCount()+1);
gbc.gridy = véletlen.nextInt(felület.getComponentCount()+1);
if (véletlen.nextBoolean()) { //egy sorba
gbc.gridwidth = véletlen.nextInt(felület.getComponentCount()+1);
gbc.gridheight = 1;
} else { //egy oszlopba
gbc.gridwidth = 1;
gbc.gridheight = véletlen.nextInt(felület.getComponentCount()+1);
}
gbc.weightx = gomb.getAlignmentX(); //igazítási súlyok
gbc.weighty = gomb.getAlignmentY();
gbc.fill = java.awt.GridBagConstraints.BOTH; //igazítás minden irányba
}
/** Konstruktor az elrendezési stratégia beállításával. */
GridBagLayoutTeszt() {
super( new java.awt.GridBagLayout() );
}
/**
A grafikus felhasználói felület felépítése {@code GridLayout}-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[]) {
felépít( new GridBagLayoutTeszt(), 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 );
}
}