PDA

Visualizza la versione completa : [java]gridbaglayout


giuseppe500
18-04-2005, 15:25
Ciao a tutti.
Ho il seguente codice che non fa quello che vorrei:
public class FtpImmagini extends JFrame{

private GridBagConstraints constraints;
private GridBagLayout Layout;
private Container container;
public FtpImmagini()
{
container=this.getContentPane();
Layout=new GridBagLayout();
container.setLayout(Layout);
constraints=new GridBagConstraints();
JLabel lblImmagine=new JLabel("Immagini");
constraints.fill=GridBagConstraints.NORTH;
addcomponent(lblImmagine,0,0,2,1);

JCheckBox chkImmagine=new JCheckBox("Mantieni Proporzioni");
addcomponent(chkImmagine,1,0,1,1);
constraints.weightx=1000;
constraints.weighty=0;
JLabel lbldirectory=new JLabel("Directory:");
addcomponent(lbldirectory,2,0,1,1);



JTextField txtdir=new JTextField();
addcomponent(txtdir,2,1,1,1);



}
private void addcomponent(Component c,int row,int col,int width,int height)
{
constraints.gridx=col;
constraints.gridy=row;
constraints.gridheight=height;
constraints.gridwidth=width;
Layout.setConstraints(c,constraints);
container.add(c);
}
public static void main(String[]args)
{
FtpImmagini f= new FtpImmagini();
f.setSize(350,200);
//f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);


}

vorrei che il jtextfield txtdir fosse posizionato con una certa larghezza subito dopo la label lbldirectory ma , non ci riesco.
Grazie in anticipo

dekdek
18-04-2005, 15:51
constraints.weightx=1000;
constraints.weighty=0;


Qui probabilmente non succede quello che speravi.
Questi due constraints vengono assegnati sia a lbldirectory che a txtdir

dekdek
18-04-2005, 16:49
Potresti usare questa classe per definire i GridBagConstraints

http://www.horstmann.com/articles/GBC.java

L'utilizzo e' spiegato qui:

http://www.horstmann.com/articles/Taming_the_GridBagLayout.html

Cmq ora controllo il codice. Certo che pure tu...



constraints.gridx=col;
constraints.gridy=row;

dekdek
18-04-2005, 17:27
public FtpImmagini() {
container=this.getContentPane();
Layout=new GridBagLayout();
container.setLayout(Layout);
constraints=new GridBagConstraints();
constraints.weightx=100;
constraints.weighty=100;
JLabel lblImmagine=new JLabel("Immagini");
// constraints.fill=GridBagConstraints.NORTH; // NON HA SENSO!!!
constraints.fill = GridBagConstraints.HORIZONTAL;
//oppure: constraints.anchor = GridBagConstraints.NORTH;
addcomponent(lblImmagine,0,0,2,1);
constraints.fill = GridBagConstraints.NONE;

JCheckBox chkImmagine=new JCheckBox("Mantieni Proporzioni");
addcomponent(chkImmagine,1,0,1,1);
JLabel lbldirectory=new JLabel("Directory:");
addcomponent(lbldirectory,2,0,1,1);



JTextField txtdir=new JTextField();
constraints.fill=GridBagConstraints.HORIZONTAL;
addcomponent(txtdir,2,1,1,1);

Loading