Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Ordinamento colonne jtable ed aggiornamento modello

    Salve a tutti!

    Sto realizzando un progetto che consiste nella realizzazione di un software in JAVA che gestisce un database Oracle. Ho un piccolo problema che spero qualcuno mi aiuti a risolvere! In pratica, vorrei che ad ogni jtable, un utente medio cliccando su ogni colonna, la ordini sia in maniera crescente, sia in maniera decrescente. Ciò si potrebbe realizzare con il seguente metodo:

    nomeTabella.setAutoCreateRowSorter(true);

    che andrebbe inserito nel costruttore della classe che ospita la jtable. Vero? Se erro correggetemi. Inoltre mi sono accorto che c'è un problema: se vado a riordinare le colonne cliccandoci sopra, la cancellazione e la modifica dei dati nel database si comporta in maniera strana, cioè a volte cancella, a volte non cancella proprio, altre volte cancella la riga precedente o quella successiva! Invece se non ordino nessuna colonna, funziona tutto a meraviglia!

    Se ho ben capito, il problema è derivato dal fatto che ordinando per colonna, i dati visualizzati si aggiornano, ma il modello della tabella non viene aggiornato, vero?

    Come posso fare per risolvere il problema? Esiste qualche metodo? Grazie anticipatamente a chi mi risponderà!

    p.s. uso NetBeans 6.5

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

    Re: Ordinamento colonne jtable ed aggiornamento modello

    Originariamente inviato da Tidus84
    nomeTabella.setAutoCreateRowSorter(true);

    che andrebbe inserito nel costruttore della classe che ospita la jtable. Vero?
    Solo da Java 6. E comunque sarebbe bene se leggi la documentazione di TableRowSorter (che spiega i criteri con cui effettua le comparazioni). E magari anche il tutorial: Sorting and Filtering

    Originariamente inviato da Tidus84
    se vado a riordinare le colonne cliccandoci sopra, la cancellazione e la modifica dei dati nel database si comporta in maniera strana
    Per questo bisognerebbe vedere .... se usi un "tuo" table model, come prelevi i dati dalla tabella e altro.

    Questa funzionalità (anch'essa solo da Java 6) permette di trascinare e spostare le colonne. Ma non tocca il model. Esiste in JTable una mappatura tra le colonne nella "view" e nel "model", all'inizio è 1:1. Se sposti le colonne, ovviamente cambia. E JTable ha degli appositi metodi per convertire riga o colonna dalla view al model e viceversa.

    Non vorrei che, ad esempio, prelevi i dati con getValueAt() di JTable (e non del model) che riceve riga/colonna ma della "view". Visto che le colonne nella view possono essere diverse dal model, non puoi aspettarti in una colonna della view es. la 0 che ci sia sempre il dato che ti interessa es. un ID di tabella!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Re: Re: Ordinamento colonne jtable ed aggiornamento modello

    Originariamente inviato da andbin
    Solo da Java 6. E comunque sarebbe bene se leggi la documentazione di TableRowSorter (che spiega i criteri con cui effettua le comparazioni). E magari anche il tutorial: Sorting and Filtering

    Per questo bisognerebbe vedere .... se usi un "tuo" table model, come prelevi i dati dalla tabella e altro.

    Questa funzionalità (anch'essa solo da Java 6) permette di trascinare e spostare le colonne. Ma non tocca il model. Esiste in JTable una mappatura tra le colonne nella "view" e nel "model", all'inizio è 1:1. Se sposti le colonne, ovviamente cambia. E JTable ha degli appositi metodi per convertire riga o colonna dalla view al model e viceversa.

    Non vorrei che, ad esempio, prelevi i dati con getValueAt() di JTable (e non del model) che riceve riga/colonna ma della "view". Visto che le colonne nella view possono essere diverse dal model, non puoi aspettarti in una colonna della view es. la 0 che ci sia sempre il dato che ti interessa es. un ID di tabella!!
    Prima di tutto ti ringrazio per la pronta risposta!

    Io uso un DefaultTableModel... Allora per ovviare a questo problema dovrei usare quei metodi che convertino riga o colonna dalla view al model e viceversa, vero? Darò uno sguardo al tutorial Sun! Grazie mille!

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.