Domanda

Risolvo il progetto che utilizza Jide Ordinabile. Se la tabella contiene dati solo in inglese, l'ordinamento funziona bene. Nel caso in cui i dati si trovino in lingue miste dell'Europa occidentale, l'ordinamento fallisce.

Se ordino le raccolte di dati utilizzando Colleratore Con la forza "secondaria" funziona bene.

La domanda è: come rendere la selezione di ordinamento per ordinare i dati con la resistenza del collettore secondario o con il comparatore personalizzato?

È stato utile?

Soluzione

SorthableTableModel di Jide usa ObjectCompPaTormanager per ottenere il comparatore. È possibile registrare il tuo collettore (per impostazione predefinita, utilizziamo il collettore primario)

Collar collatar = collator.getInstance (); collator.setstrength (collator.secondary);

ObjectCompParatormanager.RegisterComparator (String.class, Collator, New ComparatorContext ("COLATOR SECONDARY")); // "collatoratoscondary" potrebbe essere qualsiasi stringa univoca nella tua app

Quindi nella tua sottoclasse SortAbleTableModel, restituisci un nuovo comparatoreContext ("collateratosCondary") prevalere su GetColumnCompAtorContext (colonna Int) per la colonna.

Un altro modo rapido è quello di scavalcare GetCompAtor di SorthableTableTableModel (colonna Int) se si desidera solo questo comportamento in una tabella.

Ultimo ma non meno importante, potresti anche aver bisogno di chiamare SetaLeTableModel SetaLwaysUsEcomparator di SetaLways (TRUE) perché per la considerazione delle prestazioni, abbiamo usato il metodo comparatore del valore della cella se disponibile senza utilizzare un comparatore.

Altri suggerimenti

Che ne dici di eredità e polimorfismo? Puoi sottoclasse una nuova classe da Ordinabile e aggiungere comportamenti personalizzati. E usa la sua istanza in cui è necessario ordinare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top