Finora sono riuscito a evitare il più possibile il GridBagLayout
(a mano), ma non ho potuto evitarlo questa volta e sto leggendo il tutorial del SUN GridBagLayout Finora non sta andando bene. Penso di essere qualcosa di incomprensibile.
Ad esempio provo il seguente codice (simile a quello nel post di SUN):Perché GridBagLayout centra i miei componenti invece di metterli nell'angolo?
public class MainFrame extends JFrame {
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MainFrame frame = new MainFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame
*/
public MainFrame() {
super();
setBounds(100, 100, 500, 375);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container mainContainer = getContentPane();
mainContainer.setLayout(new GridBagLayout());
//add label
JLabel someLabel = new JLabel("Label 1:");
GridBagConstraints constraints = new GridBagConstraints();
constraints.gridx = 0;
constraints.gridy = 0;
//constraints.anchor = GridBagConstraints.FIRST_LINE_START;
//constraints.weightx = 0.5;
mainContainer.add(someLabel, constraints);
JTextField someText = new JTextField(30);
constraints = new GridBagConstraints();
constraints.gridx = 1;
constraints.gridy = 0;
constraints.weightx = 0.5;
mainContainer.add(someText, constraints);
//
}
}
ottengo l'etichetta e il campo di testo uno accanto all'altro nel centro del telaio.
Ma mi aspettavo che si sarebbero mostrati nell'angolo in alto a sinistra poiché la griglia e la griglia erano 0 per l'etichetta.
Anche se ho impostato lo constraints.anchor = GridBagConstraints.FIRST_LINE_START;
lo stesso risultato.
Mi sbaglio qui?
dal post del sole:
specificare la riga e la colonna in alto a sinistra del componente. La colonna a sinistra ha l'indirizzo gridx = 0 e la riga superiore ha l'indirizzo gridy = 0.
legame è spezzato. – mre
@mre: collegamento fisso – Cratylus
http://madbean.com/anim/totallygridbag/ – keuleJ