Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    51

    [Java] awt.GridBagLayout al top del JPanel

    Salve,

    devo visualizzare una lista di comandi (input di testo e bottoni) dentro un JTabbedPane

    quindi creo il JTabbedPane all'interno del tab uno JScrollPane con all'interno un JPanel
    myscrollpanel.setViewportView(getJPanel());

    con un GridBagLayout che contiene tutto il resto

    non ho utilizzato direttamente il GridBagLayout sullo scrollpane perchè mi andava in dimensione 0 anche impostando la dimensione minima

    comunque, il problema è un altro

    il GridBagLayout visualizza gli elementi al centro del JPanel che lo contiene mentre io li voglio visualizzare al top e non son riuscito a trovare un verticalAlign o spanTop o qualsiasi cosa che mi faccia allineare il tutto al top del JPanel


    qualche idea per fare in modo che gli elementi all'interno di un JPanel disposti con GridBagLayout partano dalla parte superiore del JPanel piuttosto che dal centro?

  2. #2
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Se tu hai una gridLayout di ( 3 , 3 ) e riempi solamente la prima cella ovviamente ti troverai al centro quella awt ( non sono al 100% certo di quello che dico ), ma se alle restanti celle metti un valore vuoto , dovrebbe mostrarti l'elemento correttamente incolonnato e poi considera che le altre grid saranno vuote....
    Prova e se questa non è la soluzione non ho capito cosa vuoi!
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    142
    Io pure non ho capito bene.

    Ti segnalo questo tutorial in Italiano che a me è servito:

    http://www.tukano.it/GridBagLayout.pdf

    sperando che ti sia utile.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    51

    [Java] awt.GridBagLayout al top del JPanel

    Salve,

    e grazie per le risposte, il problema però persiste
    nella guida che mi hai passato come nella documentazione di java dice di usare

    gridBag.fill = GridBagConstraints.BOTH;
    gridBag.anchor = GridBagConstraints.NORTH;

    per disporre gli elementi

    quello che ottengo però continua ad essere


    mentre io voglio qualcosa del genere




    forse succede per tutto il nesting di panel diversi
    tabbed<scroll<panel
    o più probabilmente sono io che non capisco come disporre gli elementi

    quello che mi serve in pratica è avere un tab con dei contenuti che possono eccedere la dimensione della tabella mostrando una barra di scorrimento

    codice:
    import java.awt.BorderLayout;
    import java.awt.GridBagConstraints;
    
    import javax.swing.JButton;
    import javax.swing.JPanel;
    import javax.swing.JFrame;
    import javax.swing.JTabbedPane;
    import javax.swing.JScrollPane;
    import java.awt.GridBagLayout;
    
    public class Prova extends JFrame {
    
    	private static final long serialVersionUID = 1L;
    
    	private JPanel jContentPane = null;
    
    	private JTabbedPane jTabbedPane = null;
    
    	private JScrollPane jScrollPane = null;
    
    	private JPanel jPanel = null;
    
    	/**
    	 * This is the default constructor
    	 */
    	public Prova() {
    		super();
    		initialize();
    	}
    
    	/**
    	 * This method initializes this
    	 * 
    	 * @return void
    	 */
    	private void initialize() {
    		this.setSize(519, 442);
    		this.setContentPane(getJContentPane());
    		this.setTitle("JFrame");
    	}
    
    	/**
    	 * This method initializes jContentPane
    	 * 
    	 * @return javax.swing.JPanel
    	 */
    	private JPanel getJContentPane() {
    		if (jContentPane == null) {
    			jContentPane = new JPanel();
    			jContentPane.setLayout(new BorderLayout());
    			jContentPane.add(getJTabbedPane(), BorderLayout.CENTER);
    		}
    		return jContentPane;
    	}
    
    	/**
    	 * This method initializes jTabbedPane	
    	 * 	
    	 * @return javax.swing.JTabbedPane	
    	 */
    	private JTabbedPane getJTabbedPane() {
    		if (jTabbedPane == null) {
    			jTabbedPane = new JTabbedPane();
    			jTabbedPane.addTab("Prova", null, getJScrollPane(), null);
    		}
    		return jTabbedPane;
    	}
    
    	/**
    	 * This method initializes jScrollPane	
    	 * 	
    	 * @return javax.swing.JScrollPane	
    	 */
    	private JScrollPane getJScrollPane() {
    		if (jScrollPane == null) {
    			jScrollPane = new JScrollPane();
    			jScrollPane.setViewportView(getJPanel());
    		}
    		return jScrollPane;
    	}
    
    	/**
    	 * This method initializes jPanel	
    	 * 	
    	 * @return javax.swing.JPanel	
    	 */
    	private JPanel getJPanel() {
    		if (jPanel == null) {
    			jPanel = new JPanel();
    			jPanel.setLayout(new GridBagLayout());
    			for(int i = 0; i<4; i++){
    				jPanel.add(new JButton("Prova a"+i), gridBagFactory(i, 0, 1)); 
    				jPanel.add(new JButton("Prova b"+i), gridBagFactory(i, 1, 1)); 
    				jPanel.add(new JButton("Prova c"+i), gridBagFactory(i, 2, 1)); 
    				jPanel.add(new JButton("Prova d"+i), gridBagFactory(i, 3, 1)); 
    			}
    		}
    		return jPanel;
    	}
    	
    	private GridBagConstraints gridBagFactory(int coordY, int coordX, double weightX){
    		GridBagConstraints gridBag = new GridBagConstraints();
    		gridBag.fill = GridBagConstraints.BOTH;
    		gridBag.anchor = GridBagConstraints.NORTH;
    		gridBag.insets.top = 0;
    		gridBag.gridy = coordY;
    		gridBag.weightx = weightX;
    		gridBag.gridx = coordX;
    		return gridBag;
    	}
    }
    così si dovrebbe capire meglio

    grazie per l'aiuto

  5. #5
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Ora ho capito...
    Fai così.
    Allora al Frame aggiungi un pannello ( main ) al quale imposti un Layout di tipo BorderLayout.
    Infine il tuo pannello con i bottoni aggiungilo in questo modo:
    codice:
    main.add( panelConButon , BorderLayout.NORTH );
    Così dovrebbe funzionare....forse poco pratico, ma dovrebbe funzionare...
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

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.