Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Layout Swuing

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158

    Layout Swuing

    Buon giorno ho bisogno di aiuto e non so come fare bene,sto provando un po di layout,La finestra dovrebbe essere fatta cosi, a sinistra un pannello di sinistra con un jtable , un pannello di destra dove fare delle piccole statistiche, dove andranno inserite una ricerca da data a data e qualche Button, Poi pensavo sotto la Jtable di mettere u'altro pannello con dei Button per salvare le modifiche che andranno fatte su di essa e altri bottoni per altro, ma non so se sto facendo beme,Ho impostato il Layout del Frame come un Border Layout , e aggiunto il pannello di sinistra in CENTER mentre il pannello di destra sul EAST,poi ho settato il layout del pannello right come un GridBagLayout però non riesco a metterli bene in ordine sono sfalsati.Mentre sotto La Jtable non so come fare,vi posto il codice

    codice:
    public class Frame1 extends javax.swing.JFrame{
    	
    	
    	Connection conn = null;
        ResultSet rs = null;
        PreparedStatement pst = null; 
    	
        private JPanel  left,right,sottoL;
        public JTable tabella_busta;
        private JButton mostra,prova;
        private JLabel dataDa;
    	
        private JLabel  operatore;  
    
    	public Frame1(){
    		
    		super ("Riparazione Orologi");
    		this.setSize(new Dimension(1027,768));
    		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    		this.setLayout(new BorderLayout());
    		conn = ConnessioneDb.connectDb();
    		
    
    		initComponents();
    		Popola_Tabella();
    	
    		
    		
    	}
    	
    	
    	private void initComponents() {
    		
    		//pannello di sinistra
    		left = new JPanel();
    		TitledBorder titoloPLeft = new TitledBorder("Operazioni Buste");
    		left.setPreferredSize(new Dimension(400,30));
    		left.setLayout(new GridLayout(1,2));
    		left.setBorder(titoloPLeft);
    		
    		//pannello di destra
    		right = new JPanel();
    		TitledBorder titoloPRight = new TitledBorder("Statistiche Buste");
    		right.setLayout( new GridBagLayout());
    		GridBagConstraints c = new GridBagConstraints ();
    		right.setBorder(titoloPRight);
    		
    		
    		//pannello sotto left
    		
    		sottoL = new JPanel();
    		TitledBorder sotto = new TitledBorder("Comandi");
    		sottoL.setPreferredSize(new Dimension(400,30));
    		sottoL.setLayout(new GridLayout(1,2));
    		sottoL.setBorder(sotto);
    		//left.add(sottoL);
    		
    		//Bottoni
    		mostra = new JButton("Mostra");
    		c.fill = GridBagConstraints.HORIZONTAL;
    		c.weightx = 0.2;
    		c.gridx = 1;
    		c.gridy = 0;
    		right.add(mostra, c);
    		mostra.setPreferredSize(new Dimension (100,20));
    		
    		prova = new JButton("Prova");
    		c.fill = GridBagConstraints.HORIZONTAL;
    		c.weightx = 0.5;
    		c.gridx = 1;
    		c.gridy = 0;
    		right.add(mostra, c);
    		mostra.setPreferredSize(new Dimension (100,20));
    		
    		//Etichette
    		dataDa = new JLabel("Data da");
    		dataDa.setPreferredSize(new Dimension (100,20));
    		c.fill = GridBagConstraints.HORIZONTAL;
    		//c.weightx = 0.5;
    		c.gridx = 0;
    		c.gridy = 1;
    		right.add(dataDa, c);
    		dataDa.setPreferredSize(new Dimension(200,20));
    		//right.add(dataDa,new GridLayout(1,1));
    		
    		
    		//Metto i Pannelli nel contenitore root
    		Container MainContenitore = this.getContentPane();
    		MainContenitore.setLayout(new BorderLayout());
    		MainContenitore.add(left,BorderLayout.CENTER);
    		MainContenitore.add(right,BorderLayout.EAST);
    	}
    		
    		
    		//Creo una Jtable Per le buste
    		
    		private void Popola_Tabella(){
    		 try {
                 String sql=  "select * from Buste";
                 pst = conn.prepareStatement(sql);
                 rs = pst.executeQuery();
                 
                    	    
                 ResultSetMetaData rsmd = rs.getMetaData();
                 int numColonne = rsmd.getColumnCount();
                 Vector nomeColonne = new Vector();
                 //for (int nr=0; nr<numColonne; nr++)
                        nomeColonne.add("Codice");
                 		nomeColonne.add("CodiceBusta");
                        nomeColonne.add("Prezzo costo");
                        nomeColonne.add("Prezzo");
                        nomeColonne.add("Data");
                        nomeColonne.add("Operatore");
    
    
                 
                 Vector <Vector> datiRighe = new Vector <Vector>();
                 while (rs.next()){
                        Vector riga = new Vector(); 
                        for (int nr=0; nr<numColonne; nr++) {
                            riga.add(rs.getObject(nr+1));
                        }
                 datiRighe.add(riga);
                 }
    
    				tabella_busta=new JTable(datiRighe,nomeColonne);
    				JScrollPane p = new JScrollPane(tabella_busta);//Metto la tabella in un scrollPane
    				left.add(p);//La aggingo al pannello di sinistra
    				
                    
                    
                      		
             } catch (SQLException e) {
                 JOptionPane.showMessageDialog(null, e);
                 
             }
    	
    		
    	}
    	
    	public static void main(String[] args) {
    	new Frame1().setVisible(true);;
    	
    		
    		
    		
    	}
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    Sto capendo un po meglio ma nel pannello di right i componenti stanno tutti nel centro come mai??
    codice:
    import java.awt.*;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.util.Vector;
    
    import javax.swing.*;
    import javax.swing.border.TitledBorder;
    
    //import net.proteanit.sql.DbUtils;
    
    public class Frame1 extends javax.swing.JFrame{
    	
    	
    	Connection conn = null;
        ResultSet rs = null;
        PreparedStatement pst = null; 
    	
        private JPanel  left,right,sottoL;
        public JTable tabella_busta;
        private JButton mostra,prova;
        private JLabel dataDa,dataA,operatore;
    	
        private JComboBox  combo_op;  
    
    	public Frame1(){
    		
    		super ("Riparazione Orologi");
    		this.setSize(new Dimension(1027,768));
    		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    		this.setLayout(new BorderLayout());
    		conn = ConnessioneDb.connectDb();
    		
    
    		initComponents();
    		Popola_Tabella();
    		riempicomboOp();
    	
    		
    		
    	}
    	
    	
    	
    	private void initComponents() {
    		
    		//pannello di sinistra
    		left = new JPanel();
    		TitledBorder titoloPLeft = new TitledBorder("Operazioni Buste");
    		left.setPreferredSize(new Dimension(400,30));
    		left.setLayout(new GridLayout(1,2));
    		left.setBorder(titoloPLeft);
    		
    		//pannello di destra
    		right = new JPanel();
    		TitledBorder titoloPRight = new TitledBorder("Statistiche Buste");
    		right.setLayout( new GridBagLayout());
    		GridBagConstraints c = new GridBagConstraints ();
    		right.setBorder(titoloPRight);
    		
    		
    		//pannello sotto left
    		
    		sottoL = new JPanel();
    		TitledBorder sotto = new TitledBorder("Comandi");
    		sottoL.setPreferredSize(new Dimension(400,30));
    		sottoL.setLayout(new GridLayout(1,2));
    		sottoL.setBorder(sotto);
    		//left.add(sottoL);
    		
    		//Bottoni
    		mostra = new JButton("Mostra");
    		c.fill = GridBagConstraints.HORIZONTAL;
    		c.weightx = 0.2;
    		c.gridx = 1;
    		c.gridy = 7;
    		right.add(mostra, c);
    		mostra.setPreferredSize(new Dimension (100,20));
    		
    		prova = new JButton("Prova");
    		c.fill = GridBagConstraints.HORIZONTAL;
    		c.weightx = 0.2;
    		c.gridx = 0;
    		c.gridy = 6;
    		right.add(prova, c);
    		mostra.setPreferredSize(new Dimension (100,20));
    		
    		//Etichette
    		
    		
    		//Operatore
    		
    		operatore = new JLabel("Operatore");
    		operatore.setPreferredSize(new Dimension (100,20));
    		c.fill = GridBagConstraints.HORIZONTAL;
    		c.gridx = 0;
    		c.gridy = 0;
    		right.add(operatore, c);
    		
    		
    		//dataDa
    		dataDa = new JLabel("Data da");
    		dataDa.setPreferredSize(new Dimension (100,20));
    		c.fill = GridBagConstraints.HORIZONTAL;
    		//c.weightx = 0.5;
    		c.gridx = 0;
    		c.gridy = 2;
    		right.add(dataDa, c);
    		dataDa.setPreferredSize(new Dimension(100,20));
    		//dataA
    		dataA = new JLabel("A Data");
    		dataA.setPreferredSize(new Dimension (100,20));
    		c.fill = GridBagConstraints.HORIZONTAL;
    		c.gridx = 0;
    		c.gridy = 4;
    		right.add(dataA, c);
    		
    		
    		//ComboBox
    		
    		combo_op = new JComboBox();
    		combo_op.setPreferredSize(new Dimension(100,20));
    		c.fill = GridBagConstraints.HORIZONTAL;
    		c.gridx = 1;
    		c.gridy = 0;
    		right.add(combo_op, c);
    		
    	
    		
    		
    		//Metto i Pannelli nel contenitore root
    		Container MainContenitore = this.getContentPane();
    		MainContenitore.setLayout(new BorderLayout());
    		MainContenitore.add(left,BorderLayout.CENTER);
    		MainContenitore.add(right,BorderLayout.EAST);
    	}
    		
    		
    		//Creo una Jtable Per le buste
    		
    		private void Popola_Tabella(){
    		 try {
                 String sql=  "select * from Buste";
                 pst = conn.prepareStatement(sql);
                 rs = pst.executeQuery();
                 
                    	    
                 ResultSetMetaData rsmd = rs.getMetaData();
                 int numColonne = rsmd.getColumnCount();
                 Vector<String> nomeColonne = new Vector<String>();
                 //for (int nr=0; nr<numColonne; nr++)
                        nomeColonne.add("Codice");
                 		nomeColonne.add("CodiceBusta");
                        nomeColonne.add("Prezzo costo");
                        nomeColonne.add("Prezzo");
                        nomeColonne.add("Data");
                        nomeColonne.add("Operatore");
    
    
                 
                 Vector <Vector> datiRighe = new Vector <Vector>();
                 while (rs.next()){
                        Vector<Object> riga = new Vector<Object>(); 
                        for (int nr=0; nr<numColonne; nr++) {
                            riga.add(rs.getObject(nr+1));
                        }
                 datiRighe.add(riga);
                 }
    
    				tabella_busta=new JTable(datiRighe,nomeColonne);
    				JScrollPane p = new JScrollPane(tabella_busta);//Metto la tabella in un scrollPane
    				left.add(p);//La aggingo al pannello di sinistra
    				
                    
                    
                      		
             } catch (SQLException e) {
                 JOptionPane.showMessageDialog(null, e);
                 
             }
    	
    		
    	}
    		
    		private void riempicomboOp(){
    
    		    try{
    		        String sql=  "select * from Operatori";
    		        pst = conn.prepareStatement(sql);
    		        rs = pst.executeQuery();
    		        
    		        while(rs.next()){
    		            String name = rs.getString("nome");
    		                    combo_op.addItem(name);
    		        
    		        }
    		        pst.close();
    		        rs.close();
    
    		    }catch(Exception e){
    		    JOptionPane.showMessageDialog(null,e);
    		    }   
    		    }
    	
    	public static void main(String[] args) {
    	new Frame1().setVisible(true);;
    	
    		
    		
    		
    	}
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    Per quanto riguarda il pannello CENTER di borderLayout ho inserito un'altro pannello con GridLayout(2,1) due righe e una colonna come faccio definire quale componente viene caricato nella prima riga?? a me viene fuori il contrario
    Immagini allegate Immagini allegate

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Nio74
    Per quanto riguarda il pannello CENTER di borderLayout ho inserito un'altro pannello con GridLayout(2,1) due righe e una colonna come faccio definire quale componente viene caricato nella prima riga?? a me viene fuori il contrario
    Nella prima riga del GridLayout? Il primo componente che aggiungi a quel pannello...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    @Nio74: io ti suggerirei una cosa. Se nella parte destra vuoi avere una specie di "form" cioè un'area dove i componenti sono disposti nella classica maniera:

    codice:
    [etichetta]   [componente     ]
    [etichetta]   [componente]
    ....
    Allora crea un metodo apposito che riceve l'indice di riga, il testo (della etichetta), il componente e li inserisce nel layout creando gli appositi constraint per GridBagLayout.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    Grazie a tutti per il vostro aiuto ora sto capendo bene come funziona,ora mi sto studiando gli eventi e i menu

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    volevo fare appunto una serie di label con nomi differenti se qualcuno ha qualche idea da suggerire Vi ringrazio

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    Mi faccio le domande e poi mi do le risposte ma magari serve ad altri


    int i=0;
    JLabel lblS [] = new JLabel[4];
    String b [] = {"Codice Busta","Prezzo Costo","Prezzo Vendita","Data","Operatore"};
    for( i = 0; i < lblS.length; i++) {
    lblS[i] = new JLabel(b[i]);
    lblS[i].setSize(80, 80);

    pan_Sinistra.add(lblS[i]);//aggiungo al pannello

    }

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.