Oppure

Loading
05/08/09 13:23
killer
ciao a tutti... come faccio a visualizzare i dati contenuti nel vettore in una JTable?
tenete presente che i dati(gli attributi) vengono memorizzati nel vettore attraverso l'oggetto istanziato della classe base....Ex..ho una classe
public class Animale{}
i cui attributi sono
int numZampe; String genere;

questi attributi li rikiamo dalla classe base istanziando un oggetto e memorizzandoli in un vettore:

Animale a = new Animale();
a.numZampe=this.JTextField1.getText();
a.genere=this.JTextField2.getText();
vettore.addElementAt(a);

bene adesso pero..
non so come settare il model e visualizzare i dati in un ciclo
for(conta=0;conta < vettore.size();conta++){} nella JTable...come faccio ? postate il source grazie

Ultima modifica effettuata da killer 05/08/09 13:25
aaa
05/08/09 17:36
killer
Ekko il source so riuscito a farlo....tutto funziona comunque...la visualizzazione dei dati risulta efficente pero generando degli errori,delle eccezioni le quali non sono riuscito a capire.....
Vi poso il Source cosi se ce qualche errore visibile, mi aiutate forse ho sbagliato in qualche inizializzazione che non riesco ad identificare o qualcosa di piu grave...aiutatemi a risolverlo...

Gli errori(le eccezioni) che risultano sono i(le) seguenti:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 3 >= 2
at java.util.Vector.elementAt(Vector.java:427)
at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:277)
at javax.swing.plaf.basic.BasicTableHeaderUI.paint(BasicTableHeaderUI.java:609)
at javax.swing.plaf.ComponentUI.update(ComponentUI.java:143)
at javax.swing.JComponent.paintComponent(JComponent.java:763)
at javax.swing.JComponent.paint(JComponent.java:1029)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5124)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1475)
at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1406)
at javax.swing.RepaintManager.paint(RepaintManager.java:1220)
at javax.swing.JComponent._paintImmediately(JComponent.java:5072)
at javax.swing.JComponent.paintImmediately(JComponent.java:4882)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:803)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:714)
at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:694)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)


Adesso vi posto il Source cosi magari mi aiutate perche sto impazzendo...non trovo l'errore...grazie...

package test;

import java.awt.Cursor;
import java.awt.print.PrinterException;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.table.DefaultTableModel;

public class Elenco extends javax.swing.JFrame {

    
    public Vector vect = new Vector();
    public Contatti c = new Contatti();

    private void leggi() {
        try {
            FileInputStream ff = new FileInputStream("_Contatti_.cnt");
            ObjectInputStream ff_contatti = new ObjectInputStream(ff);
            this.vect = (Vector) ff_contatti.readObject();
            ff.close();
        } catch (IOException e) {
        } catch (Exception e) {
        }
    }

    public void chiamaTab() {

        DefaultTableModel model = new DefaultTableModel();
        model.addColumn("Pos");
        model.addColumn("Nome");
        model.addColumn("Cognome");
        model.addColumn("Città");
        model.addColumn("Prov");
        model.addColumn("Indirizzo");
        model.addColumn("N°");
        model.addColumn("Tel");
        model.addColumn("Cell");
        model.addColumn("E-Mail");
        model.addColumn("Nazionalità");
        model.addColumn("Sesso");
        model.addColumn("Interessi");
        this.jTableTabella.setModel(model);

        int x = 0;
        for (x = 0; x < this.vect.size(); x++) {
            c = (Contatti) this.vect.get(x);
            model.addRow(new Object[]{c.posizione, c.nome, c.cognome, c.citta, c.prov, c.ind, c.num, c.tel, c.cell, c.eMail, c.nazionalita, c.sesso, c.interessi});
            
        }
    }

    public void setImg(boolean show) {
        if (show == true) {
            this.jLabelPos.setIcon(new javax.swing.ImageIcon(getClass().getResource("/27.gif")));
        } else {
            this.jLabelPos.setIcon(new javax.swing.ImageIcon(getClass().getResource("")));

        }
    }

    /** Creates new form Visualizza */
    public Elenco() {
        initComponents();
        this.leggi();

    }

        private void jMenuItemExitActionPerformed(java.awt.event.ActionEvent evt) {                                              
        this.dispose();
    }                                             

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        Rubrica r = new Rubrica();
        r.setVisible(true);
        this.dispose();
    }                                          

    private void jButtonHomePageActionPerformed(java.awt.event.ActionEvent evt) {                                                
        Rubrica r = new Rubrica();
        r.setVisible(true);
        this.dispose();
    }                                               

    private void jButtonStampaActionPerformed(java.awt.event.ActionEvent evt) {                                              
        try {
            this.jTableTabella.print();
        } catch (PrinterException ex) {
            Logger.getLogger(Elenco.class.getName()).log(Level.SEVERE, null, ex);
        }
    }                                             

    private void jButtonStampaMouseMoved(java.awt.event.MouseEvent evt) {                                         
        this.setCursor(Cursor.HAND_CURSOR);
    }                                        

    private void buttonVisualizzaMouseMoved(java.awt.event.MouseEvent evt) {                                            
        this.setCursor(Cursor.HAND_CURSOR);
    }                                           

    private void buttonVisualizzaActionPerformed(java.awt.event.ActionEvent evt) {                                                 
        Thread t = new Thread(new CaricamentoElenco(5000, this));
        t.start();
    }                                                

    private void jButtonHomePageMouseMoved(java.awt.event.MouseEvent evt) {                                           
        this.setCursor(Cursor.HAND_CURSOR);
    }                                          

    private void formMouseMoved(java.awt.event.MouseEvent evt) {                                

        this.setCursor(Cursor.DEFAULT_CURSOR);

    }                               

    private void jMenuFileMouseMoved(java.awt.event.MouseEvent evt) {                                     
        this.setCursor(Cursor.HAND_CURSOR);
    }                                    

    private void jMenuItemExitMouseMoved(java.awt.event.MouseEvent evt) {                                         
        this.setCursor(Cursor.HAND_CURSOR);
    }                                        

    private void jMenuProprietàMouseMoved(java.awt.event.MouseEvent evt) {                                          
        this.setCursor(Cursor.HAND_CURSOR);
    }                                         

    private void jMenuItem1MouseMoved(java.awt.event.MouseEvent evt) {                                      
        // TODO add your handling code here:
    }                                     

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new Elenco().setVisible(true);
            }
        });
    }
}



package test;

public class CaricamentoElenco extends Thread implements Runnable {

    int time;
    Elenco ele=new Elenco();

    public CaricamentoElenco(int time, Elenco ele) {
        this.time = time;
        this.ele = ele;
    }
    
    @Override
    public void run() {
        try {
            this.ele.setImg(true);
            Thread.sleep(this.time); 
            this.ele.setImg(false);
            
            //Kiama la visualizzazione dei dati nella tabella
            this.ele.chiamaTab();

            //Eccezioni sollevate...
            /*

             
             */

        } catch (InterruptedException ex) {
        }
    }
}


edit by netarrow: aggiunto il tag code
Ultima modifica effettuata da netarrow 05/08/09 20:30
aaa
05/08/09 19:17
HEAD
Postato originariamente da killer:

Ekko il source so riuscito a farlo....tutto funziona comunque...la visualizzazione dei dati risulta efficente pero generando degli errori,delle eccezioni le quali non sono riuscito a capire.....
Vi poso il Source cosi se ce qualche errore visibile, mi aiutate forse ho sbagliato in qualche inizializzazione che non riesco ad identificare o qualcosa di piu grave...aiutatemi a risolverlo...

Gli errori(le eccezioni) che risultano sono i(le) seguenti:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 3 >= 2
at java.util.Vector.elementAt(Vector.java:427)
at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:277)
at javax.swing.plaf.basic.BasicTableHeaderUI.paint(BasicTableHeaderUI.java:609)
at javax.swing.plaf.ComponentUI.update(ComponentUI.java:143)
at javax.swing.JComponent.paintComponent(JComponent.java:763)
at javax.swing.JComponent.paint(JComponent.java:1029)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5124)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1475)
at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1406)
at javax.swing.RepaintManager.paint(RepaintManager.java:1220)
at javax.swing.JComponent._paintImmediately(JComponent.java:5072)
at javax.swing.JComponent.paintImmediately(JComponent.java:4882)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:803)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:714)
at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:694)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)


Adesso vi posto il Source cosi magari mi aiutate perche sto impazzendo...non trovo l'errore...grazie...

[...]





ciao ho dato un'occhiata veloce al tuo codice .. ecco come settare un JTable
non devi fare altro che copiare questo codice ed incollarlo nella tua classe

come metodo metti questo ..funziona
:k:

//questo ti setta il Jtable

public void chiamaTab() { 
       Vector<String> header = new Vector<String>();
        Vector  model= new Vector();
        
header.add("Pos"); 
header.add("Nome"); 
header.add("Cognome"); 
header.add("Città"); 
header.add("Prov"); 
header.add("Indirizzo"); 
header.add("N°"); 
header.add("Tel"); 
header.add("Cell"); 
header.add("E-Mail"); 
header.add("Nazionalità"); 
header.add("Sesso"); 
header.add("Interessi"); 


        int x = 0; 
        for (x = 0; x < this.vect.size(); x++) { 
  Vector<Object> row = new Vector<Object>();
            c = (Contatti) this.vect.get(x); 
row.add(c.posizione);
row.add(c.nome);
row.add( c.cognome);
row.add( c.citta);
row.add( c.prov);
row.add( c.ind);
row.add( c.num);
row.add( c.tel);
row.add( c.cell);
row.add( c.eMail);
row.add( c.nazionalita)
row.add( c.sesso);
row.add( c.interessi);; 
model.add(row);          
        } 
jTableTabella.setModel(new DefaultTableModel(model, header));

    } 


ciao :):)

edit by netarrow: aggiunto tag code
Ultima modifica effettuata da netarrow 05/08/09 20:32
aaa
05/08/09 20:18
killer
Ciao ho provato....non funziona lo stesso....ossia.... l'elenco fuorisce comunque anche con il mio metodo....ma l'eccezione risulta sempre uguale

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 3 >= 2
at java.util.Vector.elementAt(Vector.java:427)

dovrebbe essere qualcosa che abbia a che fare con il vettore...qualche poblema...non so...vi prego cercate tutti insieme di risolvermelo...grazie...
aaa
05/08/09 20:55
HEAD
scusa hai detto che la tabella si visualizza con i dati , allora su quale evento genera l'errore..
aaa
06/08/09 8:09
killer
proprio nel momento in cui cliccko sul pulsante refresh .....( pero ci sto pensando....non e che quell'errore me lo da perche ho utilizzato un JButton della libreria AWT di java e non Swing come ho sempre fatto ?) e un ipotesi....!!! non saprei se potrebbe centrare qualcosa....
in poke parole io clikko sul pulsante....i dati li visualizza tutti correttamente pero escono fuori sempre le eccezzioni con : Exception ArreyOutIndexOfBounds etc..........

e na cosa stranissima.....
se vuoi ti posto direttamente tutto il mio programma cosi lo provi con netbeans e mi dici ok ?
fammi sapere presto...

ps: niente da fare ho provato anche a sostituire in jButton della libreria AWT con quella swing...niente di niente gli stessi errori ...cazzo..non vorrei che abbia fatto male qualche inizializzazione di vettore nelle principali classi....dai posto direttamente il programma completo senza perder tempo..cosi mi sistemate sto errore maledetto..

ps1: quando fate funzionare il programma, eseguite la memorizzazione del contatto e dopo attraverso il JMenuBar, cliccate su elenco....si aprira la finestra per visualizzazre i contatti....comunque e inutile provare le altre funzioni perche non ho sviluppato il source...devo ancora finirlo...
Ultima modifica effettuata da killer 06/08/09 8:38
aaa
06/08/09 12:25
HEAD
Ciao ho dato un'occhiata al tuo progetto, ehi! Ti piacciono le immagini vero? Eh,eh.. era proprio una di quella che mandava in tilt tutto , problema quasi risolto ,
dico quasi perchè dopo un po che andava benissimo, ha incominciato a dare altre eccezzioni, il ciclo for per l'elaborazione del jTable deve i incominciare da 1 e non da 0 altrimenti non legge l'elemento del tuo vector e va in eccezione superando l'array..

adesso va che e una meraviglia.. non da più errori,
devo scappare e tardi..
. ti rinvio il progetto modificato che non da più eccezioni,, a stasera se ci sei.. ciao..


PS.. poi ti spiegherò più dettagliatamente cosa ho fatto.
aaa
06/08/09 13:19
killer
gia a me piacerebbe sviluppare un enorme software in 'possesso' di una grafica spettacolare colma di immagini statiche e animazioni....il tutto gestito con i Thread...
in ogni caso...fammi sapere..ci sono sta sera...magari mi dai in privato non so se si puo in contact di msn.. cosi magari in msn riusciamo insieme a risolvere errori nei vari progetti...
grazie ancora......
a sta sera
Ultima modifica effettuata da killer 06/08/09 13:24
aaa