title image


Smiley Re: danke, habe es bemerkt, langsam kommts (oT)
Hallo Sooose,



wenn Du viel mit den GridBagConstraints arbeitest, wirst Du bald merken, dass viele Werte wie anchor, gridx, gridy etc. immer gleich sind. Um den GUI-Code nicht unnötig in die Größe zu ziehen (macht ihn auch später ziemlich unleserlich). Erstell Dir doch eine Hilfsklasse, die Dir das erleichtert. Meine sieht z.B. so aus:



import java.awt.*;



/**

* Klasse zum setzten der Constraints bei einem GridBagLayout.

* anchor auf Northwest

* fill auf None

* gridx, gridy und die vier insets müssen im Constructor mitgegeben werden

* @author Thomas, Nadine

* @version 1.0

*/



public class Constraint{



/**

* Methode zur Anordnung der Komponenten mit Hilfe von Constraints

* @param gridX horizontale Spalte

* @param gridY vertikale Spalte

* @param insetTop Abstand zum vorigen Objekt in Pixeln von oben

* @param insetLeft Abstand zum vorigen Objekt in Pixeln von links

* @param insetBottom Abstand zum nächsten Objekt in Pixeln von unten

* @param insetRight Abstand zum nächsten Objekt in Pixeln von rechts

*/

public static GridBagConstraints createConstraint(int gridX, int gridY,

int insetTop, int insetLeft, int insetBottom, int insetRight)

{

return createConstraint(gridX, gridY, insetTop, insetLeft, insetBottom,

insetRight, 1, 1);

}

/**

* Überschriebene Methode zur Anordnung der Komponenten mit Hilfe von Constraints

* hier müssen gridwidth und gridheight mitangegeben werden

* @param gridX horizontale Spalte

* @param gridY vertikale Spalte

* @param insetTop Abstand zum vorigen Objekt in Pixeln von oben

* @param insetLeft Abstand zum vorigen Objekt in Pixeln von links

* @param insetBottom Abstand zum nächsten Objekt in Pixeln von unten

* @param insetRight Abstand zum nächsten Objekt in Pixeln von rechts

* @param gWidth Breite des Objekts in Spalten

* @param gHeight Höhe des Objekts in Spalten

*/

public static GridBagConstraints createConstraint(int gridX, int gridY,

int insetTop, int insetLeft, int insetBottom, int insetRight,

int gWidth, int gHeight)

{

GridBagConstraints constraints = new GridBagConstraints();

constraints.anchor = GridBagConstraints.NORTHWEST;

constraints.fill = GridBagConstraints.NONE;

constraints.gridwidth = gWidth;

constraints.gridheight = gHeight;

constraints.gridx = gridX;

constraints.gridy = gridY;

constraints.insets = new Insets(insetTop, insetLeft, insetBottom,

insetRight);

return constraints;

}

/**

* Methode zum vereinfachten setzen der Constraints.#

* Hier werden nur die Insets angegeben. gridX und gridY sind 0, gWidth und gHeight sind 1

* @param insetTop Abstand zum vorigen Objekt in Pixeln von oben

* @param insetLeft Abstand zum vorigen Objekt in Pixeln von links

* @param insetBottom Abstand zum nächsten Objekt in Pixeln von unten

* @param insetRight Abstand zum nächsten Objekt in Pixeln von rechts

* @return

*/

public static GridBagConstraints place(int insetTop, int insetLeft,

int insetBottom, int insetRight){

return createConstraint(0, 0, insetTop, insetLeft, insetBottom,

insetRight, 1, 1);

}

/**

* Methode zum vereinfachten setzen der Constraints.#

* Hier werden nur die Insets angegeben.

* gridX und gridY sind 0, gWidth und gHeight sind 1, insetBottom und insetRight sind 0

* @param insetTop Abstand zum vorigen Objekt in Pixeln von oben

* @param insetLeft Abstand zum vorigen Objekt in Pixeln von links

*/

public static GridBagConstraints place(int insetTop, int insetLeft){

return createConstraint(0, 0, insetTop, insetLeft, 0, 0, 1, 1);

}

}



Beim adden auf ein Panel o.ä. musst Du dann nur noch die Constraint-Methoden aufrufen:

add(element, Constraint.Methode(Werte));



Hoffe, ich konnte Dir damit helfen.



PS: mich hat das GridBagLayout anfangs auch ziemlich geärgert. Eine gute Alternative dazu sind aber auch das Null-Layout und das Absolute-Layout (ist bei Netbeans dabei).
Never change a running system...


geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: