Problema con GridBagLayout

di il
4 risposte

Problema con GridBagLayout

Salve a tutti,
Sto utilizzando un GradBagLayout per un progetto e vorrei il capire perchè mi sta facendo impazzire.
Nonostante il mio codice sia corretto(penso,avendolo confrontato con l'esempio della oracle)

		this.setTitle("Camping Editor");
		this.setLayout(new GridBagLayout());
		mappa.setBackground(Color.WHITE);

		//staffPanel.setBorder(BorderFactory.createTitledBorder("Staff"));
		campingPanel.setBorder(BorderFactory.createTitledBorder("Campeggio"));

		campingPanel.setLayout(new GridBagLayout());
		GridBagConstraints c = new GridBagConstraints();

		// aggiungo i vari componenti

		c.gridx = 0;
		c.gridy = 0;
		//c.fill = GridBagConstraints.HORIZONTAL;
		campingPanel.add(lblNew, c);

		c.gridx = 1;
		c.gridy = 0;
		//c.anchor = GridBagConstraints.LINE_END;
		//c.fill = GridBagConstraints.HORIZONTAL;
		campingPanel.add(lblNumero, c);

		GridBagConstraints c1 = new GridBagConstraints();
		c1.gridx = 1;
		c1.gridy = 0;
		c1.anchor = GridBagConstraints.FIRST_LINE_END;
		this.getContentPane().add(new JLabel("Mappa"), c1);

		c1.gridx = 0;
		c1.gridy = 0;
		c1.anchor = GridBagConstraints.FIRST_LINE_START;
		this.getContentPane().add(campingPanel, c1);
i componenti nel frame continuano a essere posizionati al centro invece che agli angoli...

Qaulche consiglio??

4 Risposte

  • Re: Problema con GridBagLayout

    Innanzitutto nota che stai usando le stesse coppie di valori gridx/gridy per più componenti, questo è già dubbio/errato.
    Poi comunque tieni presente che il anchor ha senso se non è impedito dal fill. Se fai un fill HORIZONTAL, non ha senso ancorare a sinistra piuttosto che a destra.

    Detto in altro modo: il anchor ha senso quando il componente è più piccolo della cella e quindi lo puoi ancorare su un lato/angolo (della cella, ovviamente).
  • Re: Problema con GridBagLayout

    Innanzitutto nota che stai usando le stesse coppie di valori gridx/gridy per più componenti
    sono stessi valori, ma in due container differenti(da notare che in uno lo aggiungo in un JPanel campingPanel mentre nell'altro è il contentPane del frame) quindi questo non causa conflitti( giusto?)

    uguale per il fill che è commentato e non usato( facendo le prove togliendo anchor e mettendo fill HORIZONTAL non cambia nulla, i componenti vengono sempre messi nel centro della finestra)

    E comunque rimane il fatto che non si sa il perchè i componenti vengano messi al centro del frame invece che nell angolo in alto a sinistra( gridx = 0, gridy = 0).
  • Re: Problema con GridBagLayout

    Problema risolto!!
    Dovevo impostare le proprietà weightx e weighty.
    Metto il link dove ho trovato la soluzione(per chi potrà essere utile):
    https://drive.google.com/file/d/0ByNkKJSEWSy9ZTI4MktWTzJ6aVU/view?pref=2&pli=1
    E' tutto in italiano e spiega benissimo il GridBagLayout
  • Re: Problema con GridBagLayout

    MattiaP ha scritto:


    sono stessi valori, ma in due container differenti(da notare che in uno lo aggiungo in un JPanel campingPanel mentre nell'altro è il contentPane del frame) quindi questo non causa conflitti( giusto?)
    Sì, giusto, non avevo fatto attenzione io a tutto il codice.
Devi accedere o registrarti per scrivere nel forum
4 risposte