Visualizzazione dei risultati da 1 a 2 su 2

Discussione: posizionare componenti

  1. #1

    posizionare componenti

    salve a tutti, sto realizzando una JDialog per l'inseriemnto di alcuni dati ma sto diventando matto, utilizzo GridBaglayout in modo che se l'utente ingrandisce o rimpiccolisce la finestra i componenti rimarranno sempre al centro....

    ho scritto questo codice
    codice:
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import java.awt.GridBagLayout;
    
    public class dialogCliente extends JDialog{
        public Font ubuntu = new Font("ubuntu",Font.PLAIN,15);    
       
        
        public dialogCliente(){
            setTitle("Dati cliente");
            setModal(true);
            Container corpo = new JPanel();
            GridBagLayout layout = new GridBagLayout();
            GridBagConstraints lim = new GridBagConstraints();
            corpo.setLayout(layout);
            Font titolo = new Font("ubuntu", Font.BOLD, 20);
            
            Component intestazione = new JLabel("Dati cliente");
            intestazione.setFont(titolo);
            lim.gridx=0;
            lim.gridy=0;
            lim.gridwidth=2;
            layout.setConstraints(intestazione, lim);
            corpo.add(intestazione);
            
            Component rigaVuota= new JLabel(" ");
            lim.gridx=0;
            lim.gridy=1;
            lim.gridwidth=1;
            layout.setConstraints(rigaVuota,lim);
            corpo.add(rigaVuota);
            
            Component jlCognome = new jl("Cognome");
            lim.gridx=0;
            lim.gridy=2;
            lim.gridwidth=1;
            lim.ipadx=25;
            lim.ipady=8;
            lim.anchor = GridBagConstraints.EAST;
            layout.setConstraints(jlCognome,lim);
            corpo.add(jlCognome);
            
            Component jtfCognome = new jtf();
            lim.gridx=1;
            lim.gridy=2;
            lim.gridwidth=1;
            lim.ipady=0; lim.ipadx=300;
            lim.anchor = GridBagConstraints.WEST;
            layout.setConstraints(jtfCognome,lim);
            corpo.add(jtfCognome);
            
            Component jlNome =new jl("Nome");
            lim.gridx=0;
            lim.gridy=3;
            lim.gridwidth=1;
            lim.ipadx=25;
            lim.ipady=8;
            lim.anchor = GridBagConstraints.EAST;
            layout.setConstraints(jlNome,lim);
            corpo.add(jlNome);
            
            Component jtfNome = new jtf();
            lim.gridx=1;
            lim.gridy=3;
            lim.gridwidth=1;
            lim.ipady=0; lim.ipadx=300;
            lim.anchor=GridBagConstraints.WEST;
            layout.setConstraints(jtfNome,lim);
            corpo.add(jtfNome);
            
            Component jlIndirizzo = new jl("Indirizzo");
            lim.gridx=0; lim.gridy=4;
            lim.gridwidth=1;
            lim.ipadx=25; lim.ipady=8;
            lim.anchor=GridBagConstraints.EAST;
            layout.setConstraints(jlIndirizzo,lim);
            corpo.add(jlIndirizzo);
            
            Component jtfIndirizzo = new jtf();
            lim.gridx=1; lim.gridy=4;
            lim.gridwidth=1; lim.ipady=0; lim.ipadx=300;
            lim.anchor= GridBagConstraints.WEST;
            layout.setConstraints(jtfIndirizzo,lim);
            corpo.add(jtfIndirizzo);
           
            Component jlCitta = new jl("Città");
            lim.gridx=0; lim.gridy =5;
            lim.gridwidth=1;
            lim.ipadx=25; lim.ipady=8;
            lim.anchor=GridBagConstraints.EAST;
            layout.setConstraints(jlCitta,lim);
            corpo.add(jlCitta);
            
            Component jtfCitta = new jtf();
            lim.gridx=1; lim.gridy=5;
            lim.gridwidth=1; lim.ipady=0; lim.ipadx=300;
            lim.anchor= GridBagConstraints.WEST;
            layout.setConstraints(jtfCitta,lim);
            corpo.add(jtfCitta);
            
            Component jlTelefono = new jl("Telefono");
            lim.gridx=0; lim.gridy =6;
            lim.gridwidth=1;
            lim.ipadx=25; lim.ipady=8;
            lim.anchor=GridBagConstraints.EAST;
            layout.setConstraints(jlTelefono,lim);
            corpo.add(jlTelefono);
            
            Component jtfTelefono = new jtf();
            lim.gridx=1; lim.gridy=6;
            lim.gridwidth=1; lim.ipady=0; lim.ipadx=300;
            lim.anchor= GridBagConstraints.WEST;
            layout.setConstraints(jtfTelefono,lim);
            corpo.add(jtfTelefono);
            
            
            
            
            
            Container pulsanti= new JPanel();
            GridBagLayout layout2 = new GridBagLayout();
            GridBagConstraints lim2 = new GridBagConstraints();
            
            JButton jbAnnulla= new JButton("Annulla");
            jbAnnulla.setFont(ubuntu);
            lim2.gridx=0;
            lim2.gridy=0;
            layout2.setConstraints(jbAnnulla,lim2);
            pulsanti.add(jbAnnulla);
            
            JButton jbSalva = new JButton("  Salva  ");
            jbSalva.setFont(ubuntu);
            lim2.gridx=1;
            lim2.gridy=2;
            lim2.ipadx=50;
            layout2.setConstraints(jbSalva,lim2);
            
            lim.gridx=0;
            lim.gridy=7;
            lim.gridwidth=2;
            //lim.weightx=1;
            layout.setConstraints(pulsanti,lim);
            corpo.add(pulsanti);
            
            pulsanti.add(jbSalva);
            
            
            
            
            add(corpo);
            pack();
            
        
        
        }
    non riesco fare in modo che i due JButton risultino al centro della finestra... vengono sempre spostati a destra o a sinistra... ora li ho messi in un altro contenitore, prima avevo provato a gestirli nello stesso delle label e delle textbox ma non c'è verso...
    qualcuno sa dirmi come posso fare per centrare i due pulsanti?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    16
    Ciao,
    ho provato a disegnare su carta quello che hai scritto e mi è sembrato un tantinello confuso, non sono propriamente un esperto ma ho risolto un problema simile al tuo utilizzando un approccio diverso.
    Credo che il tuo problema derivi dal fatto che poni un panel nel componente (0,7) che non fa uno "span" (per usare un termine html) automatico sulle altre colonne.

    Ti suggerirei di creare un pannello di base con un gridBagLayout con 2 righe ed una colonna.
    crei altri due jpanel con un proprio layout (il primo con 6 righe e 2 colonne - il secondo una riga e due colonne) e ne piazzi uno per riga.
    In ogni "componente ci metti quel che ti serve: in prima riga ci spari tutti i componenti per la raccolta dei dati, centrandoli; in seconda riga ci metti solo i pulsanti.
    Per i pulsanti vedrai che si centrano poiché tutto diviene relativo al primo pannello (quello di sfondo) che contiene a sua volta due pannelli (i dati - i pulsanti) uno sopra l'altro, ma incolonnati.

    Prova e dimmi come ti trovi, spero di esserti stato utile così come lo sono stati altri utenti per me in giorni addietro.

    Ciao
    Use the fork() Luke!

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.