Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [Jtable]{Matrice 2 dimmensioni}(ArrayList) come fare? in java

    ho bisogno di un aiutino per una desktop application in java con netbeans. vorrei una Jtable dinamica. si può fare? come si fa? sopratutto ho una jTable che ha dimmesioni 6 righe e 2 colonne. mediante una matrice di Object statica come posso trasformarla in modo che sia dinamica magari che posso aggiungere righe. quante ne voglio. più che altro che se voglio che si espande ad una matrice 7x2 mi esce fuori l'eccezzione che sono andato oltre alle dimensioni prefedinite dell'array. esiste una classe come arrayList per fare questo perchè so che tipo ArrayList è una struttura dinamica tipo un Array ma dinamico. pero so usarla per una dimensione ma essendo una Jtable bidimensionale esce fuori questo problema. come risolvo? la matrice di Object che ho appunto contiene elementi dervati da due ArrayList. solo che posso aggiungere righe fino al numero di righe predefinite(6 come nel mio esempio).

    nel dettaglio il problema è nel seguente codice.
    classe calcoli:
    codice:
    // dichiaro variabili ovvero le proprieta della classe calcoli
    /*vedere che ci sono nrighe e righe 
    righe e colonne sono le dimmensioni della mia matrice*/
     int colonne, nMovimenti, righe, nrighe;
    // la mia matrice di object dichiarazione
     Object o[][];
    // costruttore vuoto della classe e inizializzazione di tutte le variabili della classe
    
        public calcoli() {
    // inizializzo le dimmesioni della matrice
            this.colonne = 6;
            this.nMovimenti = 0;
            this.righe = 10;
    // inizializzo una delle due arrayList
            this.movimenti = new ArrayList<movimento>();
            this.nrighe = 0;
            this.df = new DecimalFormat("#,##0.00");
    // inizializzo l'atra
            this.calcolo = new ArrayList<calcoli>();
    // inizializzo la matrice di object
            this.o = new Object[righe][colonne];
        }
    // infine il medoto aggiungiMovimento
      public void aggiungiMovimento(movimento m) {
            if (nrighe < righe) {
                movimenti.add(m);
                this.Aggiorna();
                nrighe++;
            }else{
                System.err.println("rag max righe");
            }
    
    
        }
    view:
    codice:
    // dichiaro il mio modello astratto di tabella
    AbstractTableModel atm;
    // inizializzo atm con tutti i metodi astratti 
    atm = new AbstractTableModel() {
    
                public int getRowCount() {
                    return c.getRighe();
                }
    
                public int getColumnCount() {
                    return c.getColonne();
                }
    
                public Object getValueAt(int rowIndex, int columnIndex) {
                    return c.getValore(rowIndex, columnIndex);
                }
    
                @Override
                public String getColumnName(int column) {
                    return c.getnomiColonne(column);
                }
            };
    come vedete ho righe = 6
    nrighe =0 e poi nell'aggiungi movimento c'è l'istruzione nrighe++;
    fino a qui tutto bene posso implementare movimenti pero fino al numero di righe cioè 6 come faccio che nella Jtable della view gestita da atm (abstract table model) posso iniziare con 0 righe e finire solo quando ho inserito l'ultimo movimento.

  2. #2
    per essere completo inserisco anche i metodi di popolamento della matrice cosi capisce meglio.
    di popolamento intendo come la riempo questa matrice.
    codice:
        public void Aggiorna() {
            double a = 0, d = 0, q = 0, alfa = 0, x = 0, e = 0;
            String b = "";
            int i = movimenti.size() - 1, j = calcolo.size() - 1;
            if (movimenti.get(i).isRimanenza()) {
                e = calcolo.get(j).getImporto();
                x = calcolo.get(j).sommaQuantita();
                o[nrighe][1] = "Rimanze Finali";
                o[nrighe][2] = df.format(x);
                o[nrighe][5] = df.format(e);
            } else {
                a = movimenti.get(i).getImporto();
                b = movimenti.get(i).getData();
                d = movimenti.get(i).getPrezzo();
                alfa = movimenti.get(i).getcostoPonderato();
                q = movimenti.get(i).getQuantita();
                if (movimenti.get(i).isEsistenza()) {
                    o[nrighe][0] = b;
                    o[nrighe][1] = "Esistenze Iniziali";
                    o[nrighe][3] = df.format(d);
                    o[nrighe][2] = df.format(q);
                    o[nrighe][5] = df.format(a);
                } else {
                    if (movimenti.get(i).isCarico()) {
                        o[nrighe][0] = b;
                        o[nrighe][1] = "Acquisto";
                        o[nrighe][3] = df.format(d);
                        o[nrighe][2] = df.format(q);
                        o[nrighe][5] = df.format(a);
                    } else {
                        o[nrighe][0] = b;
                        o[nrighe][1] = "Vendita";
                        o[nrighe][4] = df.format(alfa);
                        o[nrighe][2] = df.format(q);
                        o[nrighe][5] = df.format(a);
                    }
    
                }
    
            }
        }

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    traduzione della richiesta???
    intendo in un italiano comprensibile, perchè sinceramente non ho capito che vuoi

  4. #4
    vorrei fare una Jtable dinamica. si può fare? come si fa?
    la Jtable ha dimmensioni di una matrice statica di Object6x2
    6= righe
    2 = colonne
    esiste una classe come ArrayList per le matrici da rendere questa matrice statica a una matrice dinamica
    che si puo estendere ad esempio ad una matrice 7x2, 8x2, 9x2, ecc...
    in pratica aumentare le righe della matrice.
    senza che mi risulti arrrayofboundsexeception o un eccezione simile. essendo che ho righe=6 che è il massimo di elementi che posso aggiungere fino a che non raggiungo 6 righe.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    c'è la via rozza e la via elegante.
    via rozza: crei un nuovo model con il nuovo array di elementi, lo setti all'istanza di jtable che hai e fai firetabledataupdate....
    via elegante

    dai un'occhiata qui

    niente che una ricerca su google con parole chiave "add new row jtable" non ti desse subito

  6. #6
    uso la via rozza perchè sn un tipo molto grezzo che programma usando metodi di forza bruta per risolvere i problemi. no scherzo ma è la più semplice per me. comunque bei consigli. pero non capito ma devo creare una istanza della classe abstract table model e settarla con tblgestione(la mia jtable che ho) con i suoi metodi. e poi firetabledataupdate per riempire la tabella con i dati come fosse nell vecchio array.
    il nuovo array deve avere le vecchie righe + le nuove righe.

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.