Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [java] GridBagLayout

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    240

    [java] GridBagLayout

    Premesso sono alle primissime armi con Java

    sto cercando di fare una maschera per l'inserimento di dati usando il GridBagLayout;

    volevo sapere le seguenti informazioni:

    1. è possibile dare una dimensione fissa alle colonne? onde evitare che se un componente lo inserisco in 2 colonne anzichè una mi ristringa a suo piacimento le altre colonne!!!!
    2. è possibile dare una dimensione fissa al layout onde evitare che mi occupi tutta la pagina allargandosi a dismisura???

    il seguente codice mi costruisce il mio form:


    codice:
        public void disegnaFinestra()
    
    {
    pannelloDati = new JPanel();
    	
    
    c = getContentPane();
    
    
    	Gblayout = new GridBagLayout();
    	GbConstraints = new GridBagConstraints();
    	pannelloDati.setLayout(Gblayout);
    	GbConstraints.insets = new Insets(5, 5, 5, 5);
    	GbConstraints.ipadx = 1;
    	GbConstraints.ipady = 1;
    
    
    	//mi creo le etichette
    	proprietario = new JLabel("Nominativo");
    	email = new JLabel("E-mail");
    	oggetto = new JLabel("Oggetto");
    	modalitaInvio = new JLabel("Modalità di Invio");
    	maxAllegato =new JLabel ("Dimensione massima allegato");
    	titoloSezione =new JLabel("Gestione nuova e-mail");
    	blank =new JLabel("x");
    
    
    	//mi creo i campi text
    	campoProprietario = new JTextField ();
    	campoProprietario.setName("nominativo");
    
    	campoEmail = new JTextField ();
    	campoEmail.setName("email");
    
    
    	campoMaxAllegato = new JTextField ();
    	campoMaxAllegato.setName("maxAllegato");
    
    	String condizioneInvio[] = {"Client di posta predefinito", "Form di invio"};
    
    	campoModalitaInvio = new JComboBox (condizioneInvio);
    	campoModalitaInvio.setName("provincia");
    
    
    	campoOggetto = new JTextArea();
    	campoOggetto.setName("oggetto");
    
    	pulsanteIndietro = new PulsanteStandard("Indietro");
    	pulsanteSalva = new PulsanteStandard("Salva");
    
    
    	makeConstraints(0,0,10,1,0,0, titoloSezione);
    	GbConstraints.fill = GridBagConstraints.NONE;
    	GbConstraints.anchor = GridBagConstraints.NORTHEAST;
    
    	makeConstraints(1,0,1,1,0,0, proprietario);
    	makeConstraints(1,5,1,1,0,0, email);
    
    	makeConstraints(2,0,1,1,0,0, modalitaInvio);
    	makeConstraints(2,5,2,1,0,0, maxAllegato);
    
    	makeConstraints(3,0,1,1,0,0, oggetto);
    
    	GbConstraints.anchor = GridBagConstraints.NORTHEAST;
    	makeConstraints(6,0,5,1,0,0, pulsanteIndietro);
    
    	GbConstraints.anchor = GridBagConstraints.NORTHWEST;
    	makeConstraints(6,5,5,1,0,0, pulsanteSalva);
    
    
    	GbConstraints.fill = GridBagConstraints.HORIZONTAL ;
    
    	makeConstraints(1,1,4,1,1,1, campoProprietario);
    	makeConstraints(1,6,4,1,1,1, campoEmail);
    
    	makeConstraints(2,1,4,1,1,1, campoModalitaInvio);
    	makeConstraints(2,7,4,1,1,1, campoMaxAllegato);
    
    	GbConstraints.fill = GridBagConstraints.BOTH;
    	GbConstraints.anchor = GridBagConstraints.NORTHEAST;
    	makeConstraints(3,1,9,3,1,1, campoOggetto);
    
    
    	setSize(Impostazioni.getDimXFinestra(), Impostazioni.getDimYFinestra());
    
    	c.add(pannelloDati);
    
    
    	this.setResizable(false);
    	this.setSize(Impostazioni.getDimXFinestra(), Impostazioni.getDimYFinestra());
    
    }
    
    
    private void makeConstraints (
          int y,int x,     /* posizione nella griglia */
        int lx, int ly,  /* quante celle occupa (in orizzontale e verticale)*/
        int wx, int wy,   /* dimensione relativa rispetto al pannello */
        Component comp /* componente da aggiungere */
      )
      {
          GbConstraints.gridx = x; //colonna
          GbConstraints.gridy = y; //riga
          GbConstraints.gridwidth = lx;
          GbConstraints.gridheight = ly;
          GbConstraints.weightx = wx;
          GbConstraints.weighty = wy;
    
          Gblayout.setConstraints (comp, GbConstraints );
          pannelloDati.add(comp);
      }

  2. #2
    1. La caratteristica del GBLayout sono le colonne che cambiano dimensione al variare della dimensione della finestra. Forse ti serve un layout piu' semplice. Oppure ti serve qualche colonna in piu'...
    Se ti serve UNA colonna a dimensione fissa, devi porre il weigthx di tutti i suoi componenti a 0.

    2. Non saprei... Setta le dimensioni del pannello.
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    240

    mi sorge un dubbio!

    ho vreato una griglia di 10 colonne proprio per cercare di aggistarmele il meglio possibile ....

    ma se imposto weigthx =0 e il componente deve occupare più di una colonna me lo allarga lo stesso ????


    :master: bah !!!! stasera ci proverò speriamo bene!!!!

    Cmq intanto grazie !!!

  4. #4
    Si', il numero di colonne viene specificato in un altro parametro...

    Ti converebbe farti uno schemino su carta come consigliano le varie guide, oppure con un IDE come NetBeans, cosi' ti fai un'idea precisa di cosa ti serve.
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.