Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Deduco che stai usando DefaultTableModel, che ha appunto addRow. Non hai precisato però se usi la versione con Object[] o quella con Vector (cos'è stringaArticolo ?). Ma in ogni caso la tupla di N dati per la riga la componi tu in qualche modo.
Innanzitutto fai in modo da avere oggetti Integer per quella colonna. Come farlo dipende da dove ti arrivano questi dati e quanto puoi controllarli riguardo il tipo.
Questo però è solo uno degli aspetti da considerare. Come ho detto prima, puoi far cadere il sorting nella regola 3 ma questo vuol dire che il model dovrebbe fornire Integer.class per quella colonna. DefaultTableModel ritorna per default sempre Object.class.
Quindi le soluzioni sono (almeno) due:
- estendi DefaultTableModel giusto solo per ridefinire il getColumnClass in modo da applicare la regola 3
oppure
- implementi un Comparator per sfruttare la regola 1: "If a comparator has been specified by invoking setComparator, use that comparator."
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
stringaArticolo è un array di stringhe che inserisco nella riga
Si sto utilizzando un DefaultTableModel..codice:String [] stringaArticolo = {FinestraAggiungiArticolo.jtextfieldTipo.getText(), FinestraAggiungiArticolo.jtextfieldMarca.getText(), FinestraAggiungiArticolo.jtextfieldModello.getText(), FinestraAggiungiArticolo.jtextfieldQuantità.getText(), FinestraAggiungiArticolo.jtextfieldPrezzo.getText()+" EURO" , FinestraAggiungiArticolo.jtextfieldCodice.getText()}; InterfacciaPrincipale.modelloJTable.addRow(stringaArticolo);
Guarda potrei mandarti il Jar eseguibile cosi lo fai partire e ti rendi conto meglio
Innanzitutto non è (stilisticamente parlando) un "bel" codice comporre un array literal facendo tutte quelle invocazioni. Oltretutto accedi direttamente a campi di un'altra classe. E pure questo è un pessimo design.
E in ogni caso .... sono tutti String. Dovresti convertire in Integer la stringa che ti interessa trattare come numerica. Con quello che ne deriva, cioè il fatto di applicare una "validazione" (e magari anche conversione) dell'input che avresti dovuto fare prima ... non qui in questo preciso punto.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
E' il mio primo progetto...
lo so a livello di design fa un pò cagare ma l'importante è che funzioni
Ho letto la documentazione riguardo al sortering and filtering.
Mi pare di aver capito che per utilizzare un proprio ordinamento bisogna specificare un TableRowSorter che richiama un Comparator dove si è specificato il tipo di ordinamento che si vuole fare.
Ora :codice:TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel> (table.getModel()); table.setRowSorter(sorter);
Come specifico il comparator per questo sorter?