Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Layout Java

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    7

    Layout Java

    Ragazzi,

    mi sto rompendo la testa nel tentare di fare la finestra come questa:

    Non riesco ad allineare i componenti nella maniera corretta: ho provato ad utilizzare tutti i layout possibili.

    Qualcuno mi può dare una mano?

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    23

    guarda io n ho cpito bene cosa vuoi fare,prova così....poi te la aggiusti a modo tuo...

    codice:
    java.awt.*;
    import javax.swing.*;
    
        public class asd
            extends JFrame
        {
            private JButton _button1 = new JButton("nord");
            private JButton _button2 = new JButton("sud");
            private JButton _button4 = new JButton("ovest");
            private JButton _button5 = new JButton("centro");
            
            public asd()
            {
                setTitle("Come usare BorderLayout");
                setSize(500, 330);   
                
                // faccio terminare il programma al click sulla 'x'
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
                    
                // riferimento al contenitore principale di una finestra swing
                Container c = getContentPane();
                    
                // imposto il BorderLayout
                c.setLayout(new BorderLayout(2,2));
                
                _button4.setPreferredSize(new Dimension(150,100));   //gestisci la grandezza del  
                                                                                          bottone o di qualsiasi cosa
                c.add(_button1, BorderLayout.NORTH);
                c.add(_button2, BorderLayout.SOUTH);
                c.add(_button4, BorderLayout.LINE_START);
                c.add(_button5, BorderLayout.CENTER);
                
                // rendo visibile la finestra
                setVisible(true);
            }
    
            public static void main(String[] args)
            {
                new asd();
            }
        }
    spero di esserti stato utile..

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    7
    Originariamente inviato da pat87

    guarda io n ho cpito bene cosa vuoi fare,prova così....poi te la aggiusti a modo tuo...


    import java.awt.*;
    import javax.swing.*;

    public class asd
    extends JFrame
    {
    private JButton _button1 = new JButton("nord");
    private JButton _button2 = new JButton("sud");
    private JButton _button4 = new JButton("ovest");
    private JButton _button5 = new JButton("centro");

    public asd()
    {
    setTitle("Come usare BorderLayout");
    setSize(500, 330);

    // faccio terminare il programma al click sulla 'x'
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    // riferimento al contenitore principale di una finestra swing
    Container c = getContentPane();

    // imposto il BorderLayout
    c.setLayout(new BorderLayout(2,2));

    _button4.setPreferredSize(new Dimension(150,100)); //gestisci la grandezza del
    bottone o di qualsiasi cosa
    c.add(_button1, BorderLayout.NORTH);
    c.add(_button2, BorderLayout.SOUTH);
    c.add(_button4, BorderLayout.LINE_START);
    c.add(_button5, BorderLayout.CENTER);

    // rendo visibile la finestra
    setVisible(true);
    }

    public static void main(String[] args)
    {
    new asd();
    }
    }

    spero di esserti stato utile..
    Io vorrei fare una finestra come nell'immagine allegata...nè più nè meno. Ho provato ad utilizzare BorderLayout, gridlayout e flowlayout ma gli oggetti no nsi allineano come dovrebbero.

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    7
    Giusto in questo post manca il link della finestra:

  5. #5
    io con questi layout ho risolto in questo modo:

    ho creato una classe myframe che al suo interno crea 25 pannelli


    in questo modo
    5 al sud
    5 ad est
    5 ad ovest
    5 al centro
    5 al nord



    con un immagine che ho creato,

    http://picasaweb.google.it/AgostinoM...59640911018898

    mi controllo l'oggetto a quale posizione del frame deve essere allocato, e poi con un metodo della classe inserisco l'oggetto

    esempio:

    add(int numero_pannello, Object oggetto);

    con lo stesso modo posso settare il layout di tale pannello

    setLayoutPanel(int numero_pannello, LayoutManager type_Layout)

    se vuoi il codice non ci sono problemi
    Agos

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    23
    scusami internet n mi caricava l'immagine percio n vedendola pensavo volessi fare una finestra come quella in cui era scritto il messaggio...cmq prova a fare come ti dice agos,anche se 25 pannelli sn tanti secondo me...

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da agostinomiranda
    http://picasaweb.google.it/AgostinoM...59640911018898

    mi controllo l'oggetto a quale posizione del frame deve essere allocato, e poi con un metodo della classe inserisco l'oggetto
    Non si fa prima ad usare un GridBagLayout a questo punto?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    7
    Originariamente inviato da itsrv
    Giusto in questo post manca il link della finestra:
    Grazie! Si il codice lo prendo molto volentieri.
    Questo è un esercizio del corso di progettazione del sw della facoltà di ingegneria...
    Credo che non si possano usare i GridBagLayout ( ma solo GridLayout, FlowLayout e BordeLayout) e forse la soluzione a 25 pannelli è l'unica applicabile anche se essendo il tempo a disposizione è di due ore (e in questo tempo si deve fare una applicazione RMI) mi chiedo quanto tempo occorre per fare questa finestra.

    Comunque grazie molte.

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    @pat87: quando posti il codice, ricordati di includerlo nei due tag [code] e [/code] previsti dal forum e dal regolamento.

    Ho modificato io il tuo post.


    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

  10. #10
    scusa ma la classe bigLayoutManager non la conosco

    comunque



    per quando riguarda l'immagine non sò come farvala vedere.



    Il codice della classe è questo:


    codice:
     
    
    
    
    import java.awt.BorderLayout;
    	import java.awt.Color;
    	import java.awt.Component;
    	import java.awt.LayoutManager;
    	import java.awt.Toolkit;
    	import javax.swing.JFrame;
    	import javax.swing.JPanel;
    
    	public class MyFrame {
    		
    		private double 	altezzaSchermo,
    						larghezzaSchermo,
    						larghezzaFrame,
    						altezzaFrame,
    						posx,
    						posy;
    		private JPanel [] panel;
    		private JFrame frame;
    	
    		
    		public MyFrame(String titoloFinestra)
    		{
    			//creo il frame
    			frame=new JFrame(titoloFinestra); // imposta il titolo della finestra
    			
    			//imposto la dimensione e il centro
    			this.setCenterAndSize3_4();
    			
    			//inizializzo i pannelli
    			this.inizializzaPannelli();
    			
    			//aggiungo i pannelli
    			this.AddPannelli();		
    			
    			//imposto l'azione quando si preme la crocetta di chiusura sul frame
    			frame.setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
    			
    						
    		}
    		
    		private void AddPannelli()
    		{
    			//Aggiunge i pannelli seguendo uno schema
    			frame.add(panel[0]);  //aggiunto pannello principale
    			panel[0].setLayout(new BorderLayout());
    			panel[0].add(panel[28],BorderLayout.CENTER);
    			panel[28].setLayout(new BorderLayout());
    			panel[0].add(panel[26],BorderLayout.NORTH);
    			panel[26].setLayout(new BorderLayout());
    			panel[0].add(panel[27],BorderLayout.WEST);
    			panel[27].setLayout(new BorderLayout());
    			panel[0].add(panel[29],BorderLayout.EAST);
    			panel[29].setLayout(new BorderLayout());
    			panel[0].add(panel[30],BorderLayout.SOUTH);
    			panel[30].setLayout(new BorderLayout());
    			
    			panel[28].add(panel[11],BorderLayout.NORTH);
    			panel[28].add(panel[12],BorderLayout.WEST);
    			panel[28].add(panel[13],BorderLayout.CENTER);
    			panel[28].add(panel[14],BorderLayout.EAST);
    			panel[28].add(panel[15],BorderLayout.SOUTH);
    			
    			panel[26].add(panel[1],BorderLayout.NORTH);
    			panel[26].add(panel[2],BorderLayout.WEST);
    			panel[26].add(panel[3],BorderLayout.CENTER);
    			panel[26].add(panel[4],BorderLayout.EAST);
    			panel[26].add(panel[5],BorderLayout.SOUTH);
    			
    			panel[27].add(panel[6],BorderLayout.NORTH);
    			panel[27].add(panel[7],BorderLayout.WEST);
    			panel[27].add(panel[8],BorderLayout.CENTER);
    			panel[27].add(panel[9],BorderLayout.EAST);
    			panel[27].add(panel[10],BorderLayout.SOUTH);
    			
    				
    			panel[29].add(panel[16],BorderLayout.NORTH);
    			panel[29].add(panel[17],BorderLayout.WEST);
    			panel[29].add(panel[18],BorderLayout.CENTER);
    			panel[29].add(panel[19],BorderLayout.EAST);
    			panel[29].add(panel[20],BorderLayout.SOUTH);
    			
    			panel[30].add(panel[21],BorderLayout.NORTH);
    			panel[30].add(panel[22],BorderLayout.WEST);
    			panel[30].add(panel[23],BorderLayout.CENTER);
    			panel[30].add(panel[24],BorderLayout.EAST);
    			panel[30].add(panel[25],BorderLayout.SOUTH);
    			
    			
    		}
    		private void inizializzaPannelli()
    		{
    			
    			//inizializzazione di tutti i pannelli
    			panel = new JPanel[31];
    			for(int i=0;i<31;i++)
    			{
    				panel[i] = new JPanel();
    				panel[i].setBackground(Color.WHITE);
    			}
    		}
    		
    		
    		
    		private void setCenterAndSize3_4() //crea un frame della dimensioni tre quarti dello schermo
    		{			
    			//Frame
    			//Mi ricavo le dimensioni dello schermo
    			Toolkit tk = frame.getToolkit();		
    			altezzaSchermo=tk.getScreenSize().getHeight();
    			larghezzaSchermo=tk.getScreenSize().getWidth();
    			
    			//Mi ricavo le dimensioni del frame
    			//li faccio prima di un quarto dello schermo
    			larghezzaFrame=larghezzaSchermo/2;
    			altezzaFrame=altezzaSchermo/2;	
    			
    			
    			//adesso li aumento della metà di un quarto
    			larghezzaFrame+=larghezzaFrame/2;
    			altezzaFrame+=altezzaFrame/2;
    			
    			//imposto le dimensioni del frame
    			frame.setSize((int)larghezzaFrame,(int)altezzaFrame);
    			
    			//Adesso ricavo la locazione del frame e lo localizzo
    			posx = larghezzaSchermo/2 - larghezzaFrame/2;
    			posy = altezzaSchermo/2 - altezzaFrame/2;
    			frame.setLocation((int)posx, (int)posy);
    			frame.setResizable(false); //Non ridimensionabile
    			
    			
    		}
    		
    		
    		//Aggiunge il componente al pannello nmPanel
    		public Boolean addObject(int nmPanel,Component oggetto)
    		{
    			if(nmPanel<1 || nmPanel >25)
    				return false; //oggetto non aggiunto
    			
    			panel[nmPanel].add(oggetto);
    			return true; //oggetto aggiunto
    		}
    
    		
    		
    		//Setta il layout del pannello nmPanel
    		public Boolean setLayoutPane(int nmPanel,LayoutManager type_Layout)
    		{
    			if(nmPanel<1 || nmPanel >25)
    				return false; //L'ayout non aggiornato
    			
    			panel[nmPanel].setLayout(type_Layout);
    			return true; //L'ayout Aggiornato
    		}
    		
    		
    		public boolean setBackground(int nmPanel,Color colore)
    		{
    			if(nmPanel<1 || nmPanel >25)
    				return false; //colore stanza non aggiornato
    			
    			panel[nmPanel].setBackground(colore);
    			return true; //colore Aggiornato
    		}
    		public void setVisible(Boolean flag)
    		{
    			frame.setVisible(flag);
    		}
    
    		
    		
    				
    		
    	}
    Agos

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.