Visualizzazione dei risultati da 1 a 10 su 16

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Markus85 Visualizza il messaggio
    Per aggiungere una riga ho passato un array di Stringhe al metodo addRow :

    modelloJTable.addRow(stringaArticolo);

    Potrei scegliere di inserire sia Stringhe che Integer?
    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.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339
    Quote Originariamente inviata da andbin Visualizza il messaggio
    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.
    stringaArticolo è un array di stringhe che inserisco nella riga

    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);
    Si sto utilizzando un DefaultTableModel..

    Guarda potrei mandarti il Jar eseguibile cosi lo fai partire e ti rendi conto meglio

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Markus85 Visualizza il messaggio
    codice:
    String [] stringaArticolo = {FinestraAggiungiArticolo.jtextfieldTipo.getText(), FinestraAggiungiArticolo.jtextfieldMarca.getText(), FinestraAggiungiArticolo.jtextfieldModello.getText(), FinestraAggiungiArticolo.jtextfieldQuantità.getText(), FinestraAggiungiArticolo.jtextfieldPrezzo.getText()+"  EURO" , FinestraAggiungiArticolo.jtextfieldCodice.getText()};
    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.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339
    E' il mio primo progetto...
    lo so a livello di design fa un pò cagare ma l'importante è che funzioni

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339
    Quote Originariamente inviata da andbin Visualizza il messaggio
    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.
    Intendi creare dei metodi accessori per non accedere ai campi direttamente?

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339
    Quote Originariamente inviata da andbin Visualizza il messaggio
    - estendi DefaultTableModel giusto solo per ridefinire il getColumnClass in modo da applicare la regola 3
    getColumnClass?

    Potresti aiutarmi a come modificarlo per far si che i numeri della colonna relativa si ordinino?
    Ultima modifica di Markus85; 29-09-2014 a 18:04

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339
    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.

    codice:
    TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel> (table.getModel());
    table.setRowSorter(sorter);
    Ora :
    Come specifico il comparator per questo sorter?

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.