Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di Reiuky
    Registrato dal
    Jul 2008
    Messaggi
    371

    GridBagLayout: le dimensioni dei componenti

    Ancora problemi con il GridBagLyout.

    Utilizzando il .setMinimumSize su alcuni componenti, sono riuscito a sistemarmi l'interfaccia grafica su un pannello come mi piace.

    Il problema arriva quando faccio la stessa cosa su un secondo pannello, i cui componenti sono disposti allo stesso identico modo (cambiano solo le descrizioni e le funzioni).

    Ho fatto il secondo codice con ctrl+C e ctrl+V, cambiando i nomi. Ma nel secondo pannello le dimensioni dei componenti sono un po' a caso.


    Ci metto qualche spezzone di codice

    (Questo funziona come voglio)
    codice:
    	panel1 = new JPanel();
    	panel1.setLayout( new GridBagLayout() );
    	GridBagConstraints c = new GridBagConstraints();
    	
    	String element1[] = new String[0];
    	
    	elenco1 = new JComboBox( element1 );
    	elenco1.setMaximumRowCount( 5 );
    	elenco1.addItemListener( this );
    	
    	c.fill = GridBagConstraints.HORIZONTAL;
    	c.gridx = 0;
    	c.gridy = 0;
    	c.gridheight = 1;
    	c.gridwidth = 3;
    	c.insets = new Insets(10, 10, 5, 10);
    	panel1.add( elenco1, c);
    	
    	
    	String element2[] = new String[0];
    	
    	lista1 = new JList( element2 );
    	lista1.setVisibleRowCount( 5 );
    	lista1.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
    	lista1.addListSelectionListener( this );
    	
    	scrollerlista1 = new JScrollPane( lista1,
    			JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
                   JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
    	scrollerlista1.setMinimumSize( new Dimension( 150, 100) );
    	
    	c.fill = GridBagConstraints.NONE;
    	c.gridx = 0;
    	c.gridy = 1;
    	c.gridheight = 3;
    	c.gridwidth = 1;
    	c.weightx = 0;
    	c.weighty = 0;
    	c.insets = new Insets(5, 10, 5, 5);
    	panel1.add( scrollerlista1, c);
    	
    	
    	button1 = new JButton( "Firma" );
    	button1.addActionListener( this );
    	button1.setMinimumSize( dimButton );
    	
    	c.fill = GridBagConstraints.NONE;
    	c.anchor = GridBagConstraints.NORTHWEST;
    	c.gridx = 1;
    	c.gridy = 1;
    	c.gridheight = 1;
    	c.gridwidth = 1;
    	c.weightx = 0;
    	c.weighty = 0;
    	c.insets = new Insets(5, 5, 4, 5);
    	panel1.add( button1, c);
    ... e così via. Aggiungo solo altri bottoni e una JTextArea

    Invece, questo codice non mi da lo stesso risultato
    codice:
    	panel2 = new JPanel();
    	panel2.setLayout( new GridBagLayout() );
    	GridBagConstraints c = new GridBagConstraints();
    	
    	String element1[] = new String[0];
    	
    	elenco2 = new JComboBox( element1 );
    	elenco2.setMaximumRowCount( 5 );
    	elenco2.addItemListener( this );
    	
    	c.fill = GridBagConstraints.HORIZONTAL;
    	c.gridx = 0;
    	c.gridy = 0;
    	c.gridheight = 1;
    	c.gridwidth = 3;
    	c.weightx = 1;
    	c.weighty = 0;
    	c.insets = new Insets(10, 10, 5, 10);
    	panel2.add( elenco2, c);
    	
    	
    	String element2[] = new String[0];
    	
    	lista2 = new JList( element2 );
    	lista2.setVisibleRowCount( 5 );
    	lista2.setSelectionMode( ListSelectionModel.MULTIPLE_INTERVAL_SELECTION );
    	lista2.addListSelectionListener( this );
    	
    	scrollerlista2 = new JScrollPane( lista2,
    			JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
                            JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
    	scrollerlista2.setMinimumSize( new Dimension( 150, 100) );
    	
    	c.fill = GridBagConstraints.NONE;
    	c.gridx = 0;
    	c.gridy = 1;
    	c.gridheight = 3;
    	c.gridwidth = 1;
    	c.weightx = 0;
    	c.weighty = 0;
    	c.insets = new Insets(5, 10, 5, 5);
    	panel2.add( scrollerlista2, c);
    	
    	button2 = new JButton( "Crea Pacchetto" );
    	button2.addActionListener( this );
    	button2.setMinimumSize( dimButton );
    	
    	c.fill = GridBagConstraints.NONE;
    	c.anchor = GridBagConstraints.NORTHWEST;
    	c.gridx = 1;
    	c.gridy = 1;
    	c.gridheight = 1;
    	c.gridwidth = 1;
    	c.weightx = 0;
    	c.weighty = 0;
    	c.insets = new Insets(5, 5, 4, 5);
    	panel2.add( button2, c);
    Inutile dire che è la quarta o quinta volta che gioco al "cerca le differenze tra i due codici" e non trovo la soluzione.

  2. #2
    Utente di HTML.it L'avatar di Reiuky
    Registrato dal
    Jul 2008
    Messaggi
    371
    Il mistero si infittisce!!!

    Facendo vari tentativi ho hotato che il primo codice funziona solo con .setMinimumSize, mentre il secondo solo con .setPrefferredSize.



    Per quanto mi riguarda, posso abbozzare piantandoli entrambi (e già che ci sono anche il .setMaximumSize e il .setSize) su ogni componente che richiede le dimensioni... giusto per stare tranquillo che funzioni. Però, se qualcuno ha la risposta al mistero, mi farebbe molto piacere conoscerla. ^___^

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 © 2025 vBulletin Solutions, Inc. All rights reserved.