Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    Aggiungere Colonna Jtable

    E rieccomi qui a sbattere ancora su queste maledette jtable!!!!!!!!! adesso il mio problema e' quello di poter aggiungere un nuova colonna su una jtable! ho modificato in questo modo il mio AbstractTableModel con l'aggiunta di questi metodi:
    codice:
    private List<String> Colon = new ArrayList<String>();
    
    void addColon( String confFile )
    	 {
    		Colon.add(confFile);
    	 }
    
    public String getColumnName(int column)
    	 {
    		
    		int index = 0;
    		for (String columnName : confFileColon) {
    			if (index == column)
    				return columnName ;
    			index++;
    		}
    		return null;
    }

    pero' se richiamo il metodo add colon non succeddede nulla!!! qualcuno di voi potrebbe darmi un aiuto!!! grazie!!

  2. #2
    confFileColon = Colon !! scusate per l'errore!!

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

    Re: Aggiungere Colonna Jtable

    Originariamente inviato da rocklife
    adesso il mio problema e' quello di poter aggiungere un nuova colonna su una jtable!
    Devi chiaramente fare le seguenti cose:

    1) Aggiornare la struttura dati del table model (quello che è, non lo so .... array di array, Vector di Vector, array o Vector di un TuoTipo o altro), in modo che poi getColumnCount() ritorni il nuovo conteggio delle colonne.
    2) Aggiornare l'insieme dei nomi delle colonne, in modo che poi getColumnName() ritorni il nome della nuova colonna.
    3) Fare il "fire" dell'evento TableModelEvent per notificare la "view". Dal momento che la struttura è cambiata, è appropriato invocare fireTableStructureChanged().
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Grandissimo!!!!grazie mille!!!!!!!! i primi 2 punti erano ok mi mancava il terzo!! io usavo fireTableDataChanged() ma questo dovrebbe essere solo per le righe della tabella!!! grazie mille!!!!!

    Approfitto della tua gentilezza per altre 2 domande se puoi!!!!!!!!
    la prima:
    Quando aggiungo una nuova riga alla tabella io voglio aggiungera e riempire solo la prima colonna e le altre lasciarle in bianco!! pero' questo non accade cioe' quando inserisco la nuova riga mi riepie tutte le colonne con il valore della prima colonna! ti posto il codice
    codice:
    private Vector<String> parameterRow = new Vector<String>();	
    
    void addParameter( String parameterName )
    	 {
    		int sizeVector = parameterRow.size();
    		parameterRow.insertElementAt(parameterName, sizeVector);
    		//parameterRow.add(parameterName);
    	 }
    la seconda:
    E' questa che ho postato tempo fa ma nessuno mi ha ancora risposto!! in ogni caso il titolo della discussione non e' molto inerente con l'argomento, questo perche' mi hanno diviso una vecchia discussione!!
    http://forum.html.it/forum/showthrea...readid=1271966



    Grazie mille ancora!!!!!!

  5. #5
    Allora forse il primo problema l'ho capito (credo) !!!
    Siccome io aggiungo un vettore di stringhe come riga e non un oggetto riga che mi distingue i vari valori delle colonne, quando faccio un inserimento siccome per ogni elemento del vettore e' definita una riga,allora questa viene ripetuta per tutte le colonne!!
    Il problema pero' e gestirle in modo dinamico!! siccome non so' a priori quante colonne ci saranno non posso creare un oggetto riga che mi determini il valore per ogni colonna!! come posso risolverlo??? spero di essere stato chiaro!!

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da rocklife
    Quando aggiungo una nuova riga alla tabella io voglio aggiungera e riempire solo la prima colonna e le altre lasciarle in bianco!! pero' questo non accade cioe' quando inserisco la nuova riga mi riepie tutte le colonne con il valore della prima colonna! ti posto il codice
    codice:
    private Vector<String> parameterRow = new Vector<String>();	
    
    void addParameter( String parameterName )
    	 {
    		int sizeVector = parameterRow.size();
    		parameterRow.insertElementAt(parameterName, sizeVector);
    		//parameterRow.add(parameterName);
    	 }
    Non mi è ben chiaro quale è la tua struttura dati .... cos'è?? Vector di Vector di String? O altro?

    In linea generale, puoi fare un metodo nel table model che riceve e aggiunge una "riga" (e cosa sia per te una riga, dipende appunto dal tipo di struttura). Tu dall'esterno valorizzi le colonne della riga. Il metodo del table model deve solo aggiungere la riga nella sua struttura dati e fare un fireTableRowsInserted() (passando gli indici appropriati, vedi documentazione).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Ok ho capito quello che vuoi dirmi!! il problema e' proprio la struttura dati, perche' inzialmente avevo pensato ad un vettore di oggetti riga, in cui l'oggetto riga era l'insieme degli elementi da mettere nelle colonne!!! pero' dopo e' nata la necessita' di avere l'aggiunta dinamica di colonne quindi la creazione di un'oggetto si va a benedire!!! perche' non posso determinare a priori quante colonne saranno necessarie.
    nel codice che ho postato la riga e' un vettore di stringhe!! quando aggiungo una riga, aggiungo una stringa al vettore, e questa stringa si ripercuote su tutte le celle della riga!!
    Tu hai qualche idea di come gestire questa situazione?

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da rocklife
    Tu hai qualche idea di come gestire questa situazione?
    Ma la questione non è difficile!!! Basta solo stabilire alcune cose:
    - Di che tipo sono i dati?? Tutti String? (quindi getColumnClass() ritorna sempre String.class?)
    - Vuoi avere un numero arbitrario ed espandibile di righe e colonne?

    Con uno scenario di questo tipo, andrebbe bene un ArrayList<ArrayList<String>> o Vector<Vector<String>> (la differenza è la sincronizzazione ma se l'accesso è confinato al solo EDT, event dispatch thread, basta ArrayList).


    Nel tuo table model potresti fare:

    codice:
    private ArrayList<ArrayList<String>> dati;
    .....
    
    public void aggiungiRiga(ArrayList<String> riga) {
        while (riga.size() < getColumnCount())
            riga.add("");
    
        dati.add(riga);
        int n = dati.size() - 1;
        fireTableRowsInserted(n, n);
    }
    E dall'esterno fare:

    codice:
    ArrayList<String> riga = new ArrayList<String>();
    riga.add("qualcosa");
    tuoTableModel.aggiungiRiga(riga);
    il metodo del table model si preoccupa lui di aggiungere colonne vuote se necessario e poi aggiornare la struttura e notificare la view.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    questa idea mi era venuta anche a me, infatti la stavo provando!! appena finisco di sistemare ti faccio sapere!!! grazie mille cmq per la tua disponibilita'!!!!! ma per quanto rigurda la seconda discussione hai avuto tempo di darci un'occhiata?

  10. #10
    Ok perfetto!!!! Ora funziona!! Grazie mille per l'aiuto, te ne sono grato!!! adesso rimane da risolvere il secondo problema (e tutti gli altri che verranno dopo !!!!!! grazie!

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.