Domanda

Sto scrivendo alcuni metodi di persistenza dell'interfaccia utente per un'applicazione. Sto cercando di espandermi a un jxtable con un set fisso di n colonne nel modello della tabella.

Come posso ottenere e impostare le seguenti informazioni per la colonna #K in jxtable, dove k è il numero di colonna nell'ordine del modello della tabella? Non è così facile come sembra, o almeno mi manca un po 'di informazioni difficili.

  • larghezza della colonna
  • Visibilità della colonna
  • ordine di colonna

TableColumnModelExt.getColumns() Include questa nota folle, che ho problemi analizzati:

java.util.List<javax.swing.table.TableColumn> getColumns(boolean includeHidden)

Restituisce un elenco di tablecolonne contenute. Include o esclude colonne invisibili, a seconda che l'inclusione sia vera o falsa, rispettivamente. Se falso, un iteratore sull'elenco è equivalente all'enumerazione restituita da getColumns ().

Nota: l'ordine delle colonne nell'elenco dipende dal fatto che le colonne invisibili siano incluse o meno, nel caso precedente è l'ordine di inserimento nel secondo è l'ordine corrente delle colonne visibili.

Inoltre, so come usare JTable.convertColumnIndexToView(), ma restituisce -1 per colonne nascoste e non lascia informazioni su quale ordine la colonna nascosta andrebbe se fosse resa visibile. Jxtable conosce queste informazioni perché puoi ripristinare la visibilità della colonna e mette la colonna dove era prima che fosse nascosta.

È stato utile?

Soluzione

Se ti ho capito correttamente, stai dopo l'indice della colonna Visualizza una colonna nascosta se resa di nuovo visibile. Questo non è direttamente supportato.

Per salvare/ripristinare gli scopi, c'è un Classe Xproperties (Non supportato ufficialmente, ma lavorando senza intoppi) nel contesto di AppFramework che potrebbe darti un'idea di come farlo.

Modificare

Per ottenere un tablecolumn di ModelIndex, ottenere tutte le colonne, loop e confrontare ModelIndex. Alcuni pseudo-code in un metodo pseudo getColumnfor (ModelIndex):

List allColumns = table.getColumns(true);
forEach {
   if (column.getModelIndex() == modelIndex) {
        return column;
   }
return null;

Altri suggerimenti

Prendi in considerazione l'uso del Swing Application Framework (JSR-296)

Sebbene questo progetto sia ora morto afaik, penso che sia un punto di partenza migliore che implementare questa funzione da zero. (È open source.)

Se stai costruendo la tua applicazione in cima alla piattaforma NetBeans (che consiglio vivamente), allora dai un'occhiata al mio blog su come utilizzare questi due framework insieme:

http://puces-blog.blogspot.com/2009/04/netbeans-platform-meets-swing.html

Nota: c'è anche il Migliore framework di applicazioni

The Better Swing Application Framework is a fork of the original Swing Application Framework (appframework) reference implementation of JSR 296. Since August 2009, the original Swing Application Framework project has been on hold, and therefore this fork was created to carry on the work until the original project resumes. 

Non ne so molto, ma potrebbe essere anche un punto di partenza migliore.

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