11/09/14 16:38
bruno.demarini
Ciao a tutti, vorrei chiedervi se il mio codice è corretto e come risolvere alcuni problemi. Devo visualizzare il contenuto della tabella Appuntamenti di un database locale MySql all'interno della jTable tableAppunt. Dopo aver trascinato la jTable sul form, inserisco nel costruttore del frame il seguente codice:
Listato 1:
initComponents() è automaticamente generato da NetBeans e contiene anche il seguente codice:
Listato 2:
Dal listato 1 vedete che ho usato la libreria DBUtils per importare i dati dal database alla jTable passando per il tableModel tm.
Il problema è che non capisco alcune cose:
1) è corretto il fatto che in InitComponents venga automaticamente usato il DefaultTableModel e io poi gliene imponga un altro (tm). C'è un altro modo di agire?
2) Se io, attraverso NetBeans, nelle proprietà della jTable spunto la proprietà autoCreateRowSorter, noto che è possibile ordinare la tabella cliccando sull'header della colonna. Come mai questo avviene anche se, dopo InitComponents, imposto un altro tableModel (tm) e non DefaultTableModel?
3) Il campo DataOra è di tipo timeStamp, perciò i valori vengono visualizzati in questo modo: yyyy-MM-dd HH:mm:ss.
Se io volessi cambiare il formato del valore visualizzato in dd-MM-yyyy HH:mm:ss come devo fare? Considerato che ogni volta chiamo il metodo DbUtils.resultSetToTableModel(rs)...
Insomma, se non usassi il componente visuale di NetBeans jTable credo che riuscirei a gestire meglio il tutto. Mi manda un po' in crisi il fatto che da un lato ci sia il componente visuale con le sue proprietà etc e dall'altro il codice che inserisco io con il mio tableModel tm.
Spero di essere stato chiaro riguardo ai miei dubbi, purtroppo sono un po' confuso e non capisco bene qual è il giusto modo di procedere.
Grazie mille, intanto!
Listato 1:
public MainF() { initComponents(); try { EseguiConnessione(); stat = con.createStatement(); rs = stat.executeQuery("Select IDAppuntamento, " + "DataOra AS 'Data e ora', Prezzo, Done AS 'Fatto'," + "CodCliente from Appuntamenti"); tm = DbUtils.resultSetToTableModel(rs); tableAppunt.setModel(tm); } catch (SQLException ex) { JOptionPane.showMessageDialog(null, ex.getMessage()); } }
initComponents() è automaticamente generato da NetBeans e contiene anche il seguente codice:
Listato 2:
tableAppunt.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } ));
Dal listato 1 vedete che ho usato la libreria DBUtils per importare i dati dal database alla jTable passando per il tableModel tm.
Il problema è che non capisco alcune cose:
1) è corretto il fatto che in InitComponents venga automaticamente usato il DefaultTableModel e io poi gliene imponga un altro (tm). C'è un altro modo di agire?
2) Se io, attraverso NetBeans, nelle proprietà della jTable spunto la proprietà autoCreateRowSorter, noto che è possibile ordinare la tabella cliccando sull'header della colonna. Come mai questo avviene anche se, dopo InitComponents, imposto un altro tableModel (tm) e non DefaultTableModel?
3) Il campo DataOra è di tipo timeStamp, perciò i valori vengono visualizzati in questo modo: yyyy-MM-dd HH:mm:ss.
Se io volessi cambiare il formato del valore visualizzato in dd-MM-yyyy HH:mm:ss come devo fare? Considerato che ogni volta chiamo il metodo DbUtils.resultSetToTableModel(rs)...
Insomma, se non usassi il componente visuale di NetBeans jTable credo che riuscirei a gestire meglio il tutto. Mi manda un po' in crisi il fatto che da un lato ci sia il componente visuale con le sue proprietà etc e dall'altro il codice che inserisco io con il mio tableModel tm.
Spero di essere stato chiaro riguardo ai miei dubbi, purtroppo sono un po' confuso e non capisco bene qual è il giusto modo di procedere.
Grazie mille, intanto!
Ultima modifica effettuata da bruno.demarini 11/09/14 16:40
aaa