Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    225

    [Java] Più JTable in una finestra

    Ciao a tutti!
    Volevo sapere se è possibile fare una finestra con più di una JTable...!
    Devo visualizzare diversi dati in una finestra che poi devo stampare....!
    GRAZIE MILLE!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [Java] Più JTable in una finestra

    Originariamente inviato da ELY85
    Volevo sapere se è possibile fare una finestra con più di una JTable...!
    Non vedo problemi. Usa il layout-manager che preferisci per disporre i componenti come vuoi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    225
    Ok grazie mille!

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    225
    Ciao!
    Ho un problema: ho una finestra che dovrebbe contenere più di una tabella, invece continene una tabella sola!

    codice:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;
    
    public class PannelloDosi extends JPanel {
        private ListNode DOSI;
    
        public PannelloDosi(ListNode DOSI) {
            this.DOSI = DOSI;
            
            setBackground(new Color(255,255,255));
            
            int numTabelle = DOSI.length();
            GestioneTabellaDosi gtd = new GestioneTabellaDosi();
            
            
            for (int i=1; i<=numTabelle; i++) {
                JTable table = gtd.creaTabellaDosi((Dosi)DOSI.head());
                add(table);
                DOSI = (ListNode)DOSI.tail();
            }
        }
        
    }
    Ho una ListNode DOSI, contenente diversi oggetti Dose!
    Per ogni oggetto Dose dovrei creare una JTable con i dati dell'oggetto!
    Il problema è che mi appare nella finestra solo una JTable, con i dati del primo oggetto presente nella lista (e di oggetti dosi nella lista ne ho tre al momento!). La lista dovrebbe scorrerla tutta!
    Dove potrebbe essere il problema?

    codice:
    import javax.swing.*;
    
    public class GestioneTabellaDosi {
        private JTable table;
    
        public GestioneTabellaDosi() {
            table = new JTable();
        }
        
        public JTable creaTabellaDosi(Dosi d) {
                ListNode IngConDosi = d.getIngConDosi();
                int numIng = IngConDosi.length();
                String[] nomi = new String[numIng + 1];
                String[] dosi = new String[numIng + 1];
                nomi[0] = d.getNomeProdotto();
                dosi[0] = Float.toString(d.getTotale());
                for (int j=1; j<=numIng; j++) {
                    IngredienteConDose ing = (IngredienteConDose)IngConDosi.head();
                    String nome = ing.getNome();
                    String dose = Float.toString(ing.getDose());
                    nomi[j] = nome;
                    dosi[j] = dose;
                    IngConDosi = (ListNode)IngConDosi.tail(); 
                }
                Object[][] datiCelle = new Object[numIng + 1][2];
                
                /** Costruisco la griglia mettendo in prima colonna i nomi,
                 *  e in seconda colonna le dosi.
                 */
                for (int k=0; k<nomi.length; k++) {
                    datiCelle[k][0] = nomi[k];
                    for (int c=1; c<2; c++) {
                        datiCelle[k][c] = dosi[k];
                    }
                }
              
                String[] vuoto = new String[2];
                vuoto[0] = "";
                vuoto[1] = "";
                TabellaDosi myTable = new TabellaDosi(datiCelle, vuoto);
                table.setModel(myTable);
                return table;
        }
        
        
    }
    GRAZIE MILLE!

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da ELY85
    Ho un problema: ho una finestra che dovrebbe contenere più di una tabella, invece continene una tabella sola!
    Ovvio (almeno per me )

    Hai una sola istanza di GestioneTabellaDosi, quindi il JTable che ottieni è sempre lo stesso identico oggetto (referenziato dal campo 'table' della classe GestioneTabellaDosi).

    Ovviamente il gestore dell'interfaccia utente non è così scemo da aggiungere lo stesso identico oggetto.
    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
    Mar 2005
    Messaggi
    225
    Perciò nel ciclo for devo aggiungerci anche
    codice:
    GestioneTabellaDosi gtd = new GestioneTabellaDosi();
    Giusto?
    GRAZIE MILLE!

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da ELY85
    Perciò nel ciclo for devo aggiungerci anche
    codice:
    GestioneTabellaDosi gtd = new GestioneTabellaDosi();
    Giusto?
    Dipende... non è detto. Per il tuo "design" è corretto e ha senso creare più istanze di GestioneTabellaDosi?? Altrimenti nel metodo creaTabellaDosi crea una nuova JTable ogni volta.

    Dal codice che vedo, sembra che GestioneTabellaDosi sia una classe di "utility" con un metodo che semplicemente fa e ritorna qualcosa. Visto così non ha senso creare più istanze di GestioneTabellaDosi.

    La questione è sempre la solita: il design delle classi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    225
    GRAZIE!

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    225
    Ho modificato così il codice:
    codice:
    public class PannelloDosi extends JPanel {
        private ListNode DOSI, TABELLE;
        private JLabel data;
        private JTextField txt;
        private JButton salva, stampa; 
    
        public PannelloDosi(ListNode DOSI) {
            this.DOSI = DOSI;
            
            setBackground(new Color(51,204,255));
            
            data = new JLabel("Data:");
            txt = new JTextField(8);
            txt.setEditable(true);
            add(data);
            add(txt);
            
            GestioneTabellaDosi gtd = new GestioneTabellaDosi();
            TABELLE = gtd.creaTabelleDosi(DOSI);
            
            int numTabelle = TABELLE.length();
            for (int i=1; i<=numTabelle; i++) {
                JTable table = (JTable)TABELLE.head();
                add(table);
                TABELLE = (ListNode)TABELLE.tail();
            }
            
            salva = new JButton("  SALVA  ");
            stampa = new JButton("  STAMPA  ");
            add(salva);
            add(stampa);
        }
        
        
    }

    codice:
    public class GestioneTabellaDosi {
        private JTable table;
        private ListNode TABELLE;
    
        public GestioneTabellaDosi() {
            table = new JTable();
            TABELLE = new ListNode();
        }
        
        public ListNode creaTabelleDosi(ListNode DOSI) {
            int numDosi = DOSI.length();
            for (int i=1; i<=numDosi; i++) {
                Dosi d = (Dosi)DOSI.head();
                ListNode IngConDosi = d.getIngConDosi();
                int numIng = IngConDosi.length();
                String[] nomi = new String[numIng + 1];
                String[] dosi = new String[numIng + 1];
                nomi[0] = d.getNomeProdotto();
                dosi[0] = Float.toString(d.getTotale());
                for (int j=1; j<=numIng; j++) {
                    IngredienteConDose ing = (IngredienteConDose)IngConDosi.head();
                    String nome = ing.getNome();
                    String dose = Float.toString(ing.getDose());
                    nomi[j] = nome;
                    dosi[j] = dose;
                    IngConDosi = (ListNode)IngConDosi.tail(); 
                }
                Object[][] datiCelle = new Object[numIng + 1][2];
                
                /** Costruisco la griglia mettendo in prima colonna i nomi,
                 *  e in seconda colonna le dosi.
                 */
                for (int k=0; k<nomi.length; k++) {
                    datiCelle[k][0] = nomi[k];
                    for (int c=1; c<2; c++) {
                        datiCelle[k][c] = dosi[k];
                    }
                }
              
                String[] vuoto = new String[2];
                vuoto[0] = "";
                vuoto[1] = "";
                TabellaDosi myTable = new TabellaDosi(datiCelle, vuoto);
                table.setModel(myTable);
                TABELLE.insert(table);
                DOSI = (ListNode)DOSI.tail();
            }
           
            return TABELLE;
                
        }
        
        
    }
    Ma mi visualizza solo la prima tabella della lista....!
    Perchè questa volta?
    GRAZIE MILLE!

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    225
    Non dovrebbe dipendere da GestioneTabellaDosi questa volta....giusto?

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.