Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    52

    popolare Jtable dinamiico

    ciao a tutti ragazzi!!! avrei un problema
    praticamente vorrei popolare una jtable che si chiama jTableCoefficienti nel seguente modo:
    seleziono una riga di una jList e dopo che premo un bottone mi compaia il nome di una tabella e del relativi attributi.
    quindi ho messo nel bottone questo metodo funziona ma non va bene perche ogni volta che premo il bottone mi va a sovrascrivere la riga io invece vorrei che me lo aggiungesse alla jtableCoefficienti come posso fare grazie in anticipo!!!

    codice:
    jTableCoefficienti.setModel(new javax.swing.table.DefaultTableModel(
                  new Object [][] {
                      {tabella, nome},
                      {null, null},
                      {null, null},
                      {null, null}
                  },
                  new String [] {
                      "Tabella", "Campo"
                  }
              ) {
                  private static final long serialVersionUID = 1L;
                  boolean[] canEdit = new boolean [] {
                      false, false
                  };
    Ultima modifica di NicVeg; 02-04-2015 a 19:19

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Innanzitutto il modo di uso di DefaultTableModel che hai fatto tu non è per niente bello e nemmeno pratico, intendo dire il fatto di averlo istanziato con una anonymous inner class e averlo passato "al volo" al setModel. Questo rende quel codice parecchio fumoso e ti impedisce di accedere facilmente al DefaultTableModel.

    Quindi le indicazioni sono:
    - istanzia il DefaultTableModel e tieni il reference in una variabile che rimane visibile per tutto il tempo che ti serve.
    - crea il JTable passando il DefaultTableModel o settagli il model anche successivamente.
    - quando vuoi inserire una riga, DefaultTableModel offre due metodi addRow. DefaultTableModel è "mutabile" ed espandibile, offre tutti i metodi per aggiungere, cambiare, rimuovere righe e altro.

    Devi solo "parlare" con il model ... la tabella JTable si aggiornerà di conseguenza in automatico.
    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
    Nov 2013
    Messaggi
    52
    scusa non sono molto pratico provo a fare un esempio per fare pratica, per istanziare il DefaultTableModel intendi fare cosi :
    codice:
    
    
    codice:
    DefaultTableModel model = new DefaultTableModel(new Object[][] 
    {
          { tabella,campo }, // qui dovrei inserire dinamicamente le tabelle e il campo?
          new Object[] { "Column 1", "Column 2" });


    e poi
    codice:
    
    
    codice:
    JTable table = new JTable(model);
    addRow(?) // cosa dovrei passargli ?
    

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Se nel momento della creazione non serve avere già delle righe, si può usare il costruttore

    DefaultTableModel(Object[] columnNames, int rowCount)

    ovvero es.:

    codice:
    DefaultTableModel model = new DefaultTableModel(new Object[] { "Col1", "Col2" }, 0);

    Quindi, ripeto, assegni il model a JTable (alla costruzione o poco dopo con setModel) e tieni il DefaultTableModel accessibile anche in seguito.
    Per inserire righe ci sono 2 addRow:

    addRow(Object[] rowData)
    addRow(Vector rowData)

    La documentazione da seguire è ovviamente il javadoc ufficiale: DefaultTableModel
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    52
    allora ho provato cosi non so se ho fatto bene:
    codice:
      DefaultTableModel model = new DefaultTableModel(new Object[] { "Tabella", "Campo" }, 0);
          
         String[] tab1 = {tabella, nome};
         model.addRow(tab1);
            
         jTableCoefficienti.setModel(model);
    solo che adesso vorrei che premendo un bottone mi aggiunge un altra riga cioè i valori per esempio il nome di una tabella e l'attributo mentre cosi lo sovrascrive a quello che c'era prima, scusa e grazie per la pazienza

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da NicVeg Visualizza il messaggio
    solo che adesso vorrei che premendo un bottone mi aggiunge un altra riga cioè i valori per esempio il nome di una tabella e l'attributo mentre cosi lo sovrascrive a quello che c'era prima
    Sovrascrive .... perché forse questo pezzo di codice lo riesegui più volte? Sarebbe ovvio ... ricrea il model!

    Una volta che hai creato il DefaultTableModel, non lo devi più ricreare. Devi solo tenerti il reference da parte. Poi a seguito di una azione sul pulsante, puoi creare un nuovo Object[] con i dati e passarlo a model.addRow
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    52
    mado è vero come un cazzone lo avevo nel bottone ho fatto come hai detto e ora funziona grazie mille della pazienza

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.