Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Gestione JPanel

  1. #1
    Utente di HTML.it L'avatar di Buzzz
    Registrato dal
    Jan 2009
    Messaggi
    775

    Gestione JPanel



    Io devo gestire 4 JPanel affiancati, uno fianco all'altro..
    Soltanto che vorrei impostare io le dimensioni e il posizionamento di ogni JPanel.. è possbile?

    Ho provato con il setBounds, ma non succede niente..
    Allego il codice, se qualcuno riesce ad aiutarmi ne sarei grato..

    codice:
      
    import javax.swing.*;
    import javax.swing.border.*;
    import java.awt.*;
    import java.awt.event.*;
    
    public class Es8 extends JFrame /*implements ActionListener*/{
    	private JPanel panel; 
    
        public Es8(){
            //Pannello
        	panel = new JPanel(new BorderLayout());
        	panel.setLayout(new GridLayout(1, 3));
        	
        	JPanel j1 = new JPanel();
        	JPanel j2 = new JPanel();
        	JPanel j3 = new JPanel();
        	JPanel j4 = new JPanel();
        	
        	j1.setBorder(new TitledBorder(new EtchedBorder(), "Antipasti"));
        	j2.setBorder(new TitledBorder(new EtchedBorder(), "Primi"));
        	j3.setBorder(new TitledBorder(new EtchedBorder(), "Secondi"));
        	j4.setBorder(new TitledBorder(new EtchedBorder(), "Dolci"));
        	
        	//Posizionamento
        	panel.setBounds(10,10,200,100);
        	j1.setBounds(10,10,200,100);
        	
        	Container cp = getContentPane();
                 setVisible(true);
            
        	//Aggiungi
        	cp.add(panel);
        	
        	panel.add(j1);
        	panel.add(j2);
        	panel.add(j3);
        	panel.add(j4);
       }
    }
    Grazie mille a tutti!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Se vuoi posizionare e dimensionare tu a mano i componenti, non devi usare i LayoutManager.

    Quindi, devi impostare a null il LayoutManager (che di default, sarà quello previsto per la classe che usi) e non crearne uno (stai creando un GridLayout).

    codice:
    panel.setLayout( null );
    Il setBounds() sul "panel" non ha alcun effetto: panel, infatti, viene aggiunto alla finestra, che gestisce il suo contenuto tramite il suo LayoutManager.

    Sono i singoli pannelli che devono essere posizionati e dimensionati ( con setBounds() ) ed il LayoutManager va tolto, appunto, dal pannello che li contiene.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.