Newsgroup: it.comp.java
Titolo: JTable e Vector: due problemi in uno!




Ciao a tutti e buona settimana. Eccomi di nuovo qui a chiedere
consigli e a rompere! :)

Come vedete dall'oggetto i problemi che mi rodono sono due: 

1) devo caricare in un vettore (di classe Vector) un tot di elementi.
Il problema è che questi elementi sono veramente tanti.

    Per capirci (come numero max) 2 ^ 22. Fino a 2^19 me li tiene
(anche se "essere riattivo" il programma ci mette un po'). La domanda a
questo punto è:

    esiste qualche "elemento" che mi permetta di inserire tutti quegli
elementi e magari in maniera più veloce?



2)Una volta che questo vettore è "carico" lo devo visualizzare (io ho
pensato ad una  tabella ma se avete consigli sono ben accetti)

     Per questa tabella, cercando qua e la, sono arrivato a questo
punto:




       
cl
ass InvestmentTableModel
extends AbstractTableModel

{  

   

   private Vector <String> vettoreNomiColonne;

   private Vector <String> vettoreDati;

   public InvestmentTableModel(Vector <String>
vettoreNomiColonne, Vector <String> vettoreDati)

   {  

       this.vettoreNomiColonne = vettoreNomiColonne;

       this.vettoreDati = vettoreDati;

       

   }



   public int getRowCount() { return vettoreDati.size(); }



   public int getColumnCount() { return vettoreNomiColonne.size(); }



   public Object getValueAt(int r, int c) //Pezzo incriminato! :)

   {  

      

      return vettoreDati.get(c);

   }



   public String getColumnName(int c) { return
vettoreNomiColonne.get(c); }



}




Il problema è che non fa il suo lavoro (sicuramente sono io che
sono una pippa!): mi spiego.

Io vorrei che nelle singole caselle ci siano valori diversi
(ovviamente) che vadano di seguito nel vettore: avendo 4 colonne, devo
scrivere i primi 4 elementi del vettore; nella seconda riga gli
elementi del vettore da visualizzare incominceranno con indice 5 fino a
8. Quelli della riga successiva da 9 a 12 etc...

Che dite? Qualche aiutino?

Grazie mille per gli eventuali aiuti!



Andrea




 writes:
RtK> Per capirci (come numero max) 2 ^
RtK> 22. Fino a 2^19 me li tiene (anche se "essere riattivo" il
RtK> programma ci mette un po').
2^22 č veramente alto per una macchina con indirizzamento a 32 bit.
Con 4  byte per elemento hai, solo  di dati 2^26 byte,  siamo quasi al
gigabyte. Non  č che questi  dati č il  caso di tenerli su  memoria di
massa e tirare su quelli che servono ?
Inoltre,  dovresti procurarti  della documentazione  aggiornata. Usare
Vector  quando non ci  sono problemi  di concorrenza  č uno  spreco di
tempo, che  i vari accessi che  fai sono synchronized,  ovvero si deve
fare  un lock  su tutto  il  Vector. L'alternativa  leggera si  chiama
ArrayList, ma  nel tuo caso il problema  č che tieni i  dati nel posto
sbagliato.
Quanto alla visualizzazione,  falla per pagine di al  piů un centinaio
di dati.
-- 
 /\            ___
/___/\__|_|\_|__|___Gian Uberto Lauri_____________________
  //--\ | | \|  |   Integralista GNUslamico  
\/		    e allevatore di bug da competizione

   
Chiedo venia per la mia immensa ignoranza ma... in che senso? come 
potrei fare? ogni suggerimento è benaccetto!
Ancora grazie mille per l'aiuto: fare  "cose" da solo, o con un "tutor" 
le cui conoscenze non sono ai massimi livelli non è bellissimo!
Andrea

Guarda che non è una questione di conoscenza.
Il tuo problema non ha nulla a che fare con java
Non ti dice nulla che il metodo qui di seguito copiato non usi "r"?


> 
RtK> come
RtK> potrei fare?
Ad esempio  parti mostrando  i primi 100  dati (primoRecord =  0); poi
metti  un pulsante  pagina precedente  (disabilitato quando  sei sulla
prima  pagina)  e successiva  (disabilitato  quando sei  sull'ultima),
rispondi  alla pressione  del  pulsante calando  o  aumentando di  100
primoRecord e visualizzi i nuovi 100  dati. O meno se tra la posizione
dove ti trovi e la fine ci sono meno di 100 dati...





Gian Uberto Lauri ha scritto:

























Esattamente. I dati dovrebbero andare o in un database o, basterebbe, in
un file ad accesso casuale, in questo caso devi prevedere record tutti con
la stessa lunghezza di K byte e poi posizionarti al byte i*k dek file per
leggere il dato i-esimo.

  


Quanto alla visualizzazione, falla per pagine di al più un
centinaio di dati.

  



RtK> come
RtK> potrei fare?

Ad esempio  parti mostrando  i primi 100  dati (primoRecord =  0); poi
metti  un pulsante  pagina precedente  (disabilitato quando  sei sulla
prima  pagina)  e successiva  (disabilitato  quando sei  sull'ultima),
rispondi  alla pressione  del  pulsante calando  o  aumentando di  100
primoRecord e visualizzi i nuovi 100  dati. O meno se tra la posizione
dove ti trovi e la fine ci sono meno di 100 dati...

  



Tutti ottimi suggerimenti: ora vado a cercare di applicarli. Tanto so
dove trovarvi! :)

Ancora grazie mille!



Andrea