Question

Je suis en train d'écrire des méthodes de persistance de l'interface utilisateur pour une application. Je suis en train de développer un JXTable avec un ensemble fixe de N colonnes dans le modèle de tableau.

Comment puis-je obtenir et définir les informations suivantes pour #k colonne dans le JXTable, où k est le numéro de colonne pour modèle de table? Il est pas aussi facile que cela puisse paraître, ou du moins je « m manquant un peu plus délicat de l'information.

  • largeur colonne
  • la visibilité de la colonne
  • l'ordre des colonnes

TableColumnModelExt.getColumns() comprend cette folle note que je vais avoir du mal à l'analyse syntaxique:

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

Renvoie la liste des TableColumns contenus. Inclut ou exclut les colonnes invisibles, selon que le includeHidden est vrai ou faux, respectivement. Si elle est fausse, un itérateur sur la liste est équivalente à la Enumeration retourné par getColumns ().

NOTE: l'ordre des colonnes dans la liste dépend si oui ou non les colonnes invisibles sont inclus, dans le premier cas, il est de l'ordre d'insertion dans ce dernier, il est de l'ordre actuel des colonnes visibles.

En outre, je sais comment utiliser JTable.convertColumnIndexToView() , mais il renvoie -1 pour les colonnes cachées, et ne laisse aucune information sur quel ordre la colonne cachée irait si elle était rendue visible à nouveau. JXTable connaît ces informations parce que vous pouvez restaurer la visibilité de la colonne, et il met la colonne où il était avant qu'il ne soit caché.

Était-ce utile?

La solution

Si je vous comprends bien, vous êtes après l'index de colonne de vue une colonne cachée aurait si elle est faite à nouveau visible. Ce n'est pas directement pris en charge.

Pour sauvegarde / restauration des fins, il y a un XProperties classe (pas officiellement pris en charge, mais travailler en douceur) le faire dans le cadre de AppFramework qui pourrait vous donner une idée de la façon de le faire.

Modifier

Pour obtenir un TableColumn par modelIndex, obtenir toutes les colonnes, la boucle et comparer les modelIndex. Certains pseudo-code dans un procédé de pseudo getColumnFor (modelIndex):

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

Autres conseils

Envisagez d'utiliser la (JSR-296) Application Framework swing

Bien que ce projet est maintenant mort autant que je sache, je pense qu'il est un meilleur point de départ que la mise en œuvre de cette fonction à partir de zéro. (Il est open source.)

Si vous construisez votre application sur le dessus de la plate-forme NetBeans (que je recommande fortement), puis jeter un oeil à mon blog sur la façon d'utiliser ces deux cadres ainsi:

http: //puces-blog.blogspot. com / 2009/04 / NetBeans-plateforme-meets-swing.html

Note: Il y a aussi meilleur swing Application Framework

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. 

Je ne sais pas grand-chose à ce sujet, mais il pourrait être même un meilleur point de départ.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top