Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di Pierock
    Registrato dal
    Dec 2008
    Messaggi
    102

    [java] incolonnare pannelli

    Salve ragazzi,
    dovrei creare un pannello, il quale a sua volta sia composto da altri 2 pannelli..
    fin qui tutto ok, con l'unica eccezione che vorrei far si che i 2 pannelli di cui è composto appaiano l'uno sotto l'altro..
    purtroppo mi sono accorto che questo non è così scontato come se dovessi aggiungere altre 2 componenti...

    vi posto un codice banale per capire meglio la situazione:
    codice:
    private JPanel getuno(){
    	JPanel uno = new JPanel();
    	uno.setLayout(new FlowLayout());
    	uno.add(new JButton("ciao"));
    	uno.add(new JButton("ciao2"));
    	return uno;
    }
    codice:
    private JPanel getdue(){
    	JPanel due = new JPanel();
    	due.setLayout(new FlowLayout());
    	due.add(new JButton("due"));
    	due.add(new JButton("due2"));
    	return due;
    }
    codice:
    private JPanel getGeneralPan(){
    		if(this._generalPan  == null){
    			this._generalPan = new JPanel();
    			this._generalPan.setLayout(new BoxLayout(this._generalPan, BoxLayout.Y_AXIS));
    	
    			this._generalPan.add(this.getuno());
    			this._generalPan.add(Box.createVerticalGlue());
    			this._generalPan.add(this.getdue());
    		}
    		return this._generalPan;
    	}
    io a questo punto mi aspetterei che i due pannelli compaiano addirittura attaccati l'uno all'altro in senso verticale... cosa che succede se avessi aggiunto direttamente 2 JButton... invece appare un odiosissimo spazio tra i 2 che nn so eliminare....
    suggerimenti?

  2. #2
    Ne butto una. Se usi GridLayout? Così hai una griglia di cui specifichi colonne e righe del tuo pannello contenitore?

  3. #3
    Utente di HTML.it L'avatar di Pierock
    Registrato dal
    Dec 2008
    Messaggi
    102
    si , ho provato anche con il gridlayout... il risultato è lo stesso...
    il pannello si aggiunge perfettamente sotto ad un'altra componente.. (jbutton ad esempio) .. ma crea uno spazio per il suo successore...
    : /
    è orribile

  4. #4
    Mi posti tutto il codice?

  5. #5
    Utente di HTML.it L'avatar di Pierock
    Registrato dal
    Dec 2008
    Messaggi
    102
    il codice originario è troppo lungo... ma l'esempio di su ha lo stesso problema...
    la cosa che ho notato genera il difetto è che il "generalPan" è inserito in un pannello BorderLayout , al centro!
    ti riposto un codice completo che ti farà capire tutto...

    cmq sia ti ringrazio per l'aiuto ke mi stai dando!

    codice:
    import java.awt.BorderLayout;
    import java.awt.Container;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    
    import javax.swing.Box;
    import javax.swing.BoxLayout;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTabbedPane;
    
    
    public class oo extends JPanel{
    
    	private JPanel _generalPan= null;
    	
    	public oo(){
    		super();
    		this.setLayout(new BorderLayout());
    		JTabbedPane tab = new JTabbedPane();
    		JScrollPane js = new JScrollPane(getGeneralPan());
    		tab.add(js,"cc",0);
    		this.add(tab, BorderLayout.CENTER);
    	}
    	
    	private JPanel getuno(){
    		JPanel uno = new JPanel();
    		uno.setLayout(new FlowLayout());
    		uno.add(new JButton("ciao"));
    		uno.add(new JButton("ciao2"));
    		return uno;
    	}
    	private JPanel getdue(){
    		JPanel due = new JPanel();
    		due.setLayout(new FlowLayout());
    		due.add(new JButton("due"));
    		due.add(new JButton("due2"));
    		return due;
    	}
    	private JPanel getGeneralPan(){
    		if(this._generalPan  == null){
    			this._generalPan = new JPanel();
    			this._generalPan.setLayout(new BoxLayout(this._generalPan, BoxLayout.Y_AXIS));
    	
    			this._generalPan.add(this.getuno());
    			this._generalPan.add(Box.createVerticalGlue());
    			this._generalPan.add(this.getdue());
    		}
    		return this._generalPan;
    	}
    	
    	public static void main(String[] arg){
    		JFrame frame = new JFrame("test");
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.setSize(new Dimension(600,500));
    		Container cont = frame.getContentPane();
    		cont.add(new oo());
    		frame.setVisible(true);
    	}
    }

  6. #6
    this._generalPan.setLayout(new BoxLayout(this._generalPan, BoxLayout.Y_AXIS));

    E' questa la riga che genera il problemino. Levandola non so perchè ma il problema scompare misteriosamente...Per quanto guarda la distanza tra verticale dipende dalla grandezza del frame

  7. #7
    Utente di HTML.it L'avatar di Pierock
    Registrato dal
    Dec 2008
    Messaggi
    102
    e ma se elimino la riga incriminata... i 2 pannelli appaiono l'uno di fianco all'altro..
    io li voglio in verticale !
    :-/

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.