Frage

Ich schreibe einige UI -Persistenzmethoden für eine Anwendung. Ich versuche, mit einem festen Satz von N -Spalten im Tabellenmodell auf einen Jxtable zu erweitern.

Wie kann ich die folgenden Informationen für Spalte #K in der jxtable erhalten und festlegen, wobei k die Spaltennummer in Tabellenmodellreihenfolge ist? Es ist nicht so einfach, wie es sich anhört, oder zumindest fehlt mir schwierige Informationen.

  • Spaltenbreite
  • Säulensichtsfähigkeit
  • Säulenreihenfolge

TableColumnModelExt.getColumns() Enthält diese verrückte Note, die ich Probleme habe, zu analysieren:

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

Gibt eine Liste der enthaltenen Tabellen zurück. Enthält oder schließt unsichtbare Spalten aus oder schließt es aus, je nachdem, ob das Includehidden wahr oder falsch ist. Wenn falsch, entspricht ein Iterator über die Liste der von getColumns () zurückgegebenen Aufzählung.

HINWEIS: Die Reihenfolge der Spalten in der Liste hängt davon ab, ob die unsichtbaren Spalten enthalten sind oder nicht, im ersteren Fall ist es die Einfügungsreihenfolge in letzterem, es ist die aktuelle Reihenfolge der sichtbaren Spalten.

Außerdem weiß ich, wie man benutzt JTable.convertColumnIndexToView(), aber es gibt -1 für versteckte Spalten zurück und lässt keine Informationen darüber zurück, welche Reihenfolge die versteckte Spalte verlaufen würde, wenn sie erneut sichtbar gemacht würde. Jxtable kennt diese Informationen, da Sie die Sichtbarkeit der Spalte wiederherstellen können, und sie setzt die Spalte, wo sie war, bevor sie versteckt war.

War es hilfreich?

Lösung

Wenn ich Sie richtig verstehe, sind Sie nach dem Spaltenspaltenindex für Ansicht, eine versteckte Spalte, wenn sie erneut sichtbar gemacht hätte. Das wird nicht direkt unterstützt.

Zum Speichern/Wiederherstellen von Zwecken gibt es a Klasse Xproperties (Nicht offiziell unterstützt, aber reibungslos arbeiten) Tun im Kontext von Appframework, die Ihnen möglicherweise eine Vorstellung davon geben, wie es geht.

Bearbeiten

Um einen Tabellenhandel von ModelIndex zu erhalten, holen Sie sich alle Spalten, schleifen und vergleichen Sie den ModelIndex. Einige Pseudo-Code in einer Pseudo-Methode getColumnfor (modelIndex):

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

Andere Tipps

Erwägen Sie, die zu verwenden Swing Application Framework (JSR-296)

Obwohl dieses Projekt jetzt tot ist, ist es ein besserer Ausgangspunkt, als diese Funktion von Grund auf neu zu implementieren. (Es ist Open Source.)

Wenn Sie Ihre Anwendung über der Netbeans -Plattform (was ich sehr empfehle) aufbauen, schauen Sie sich meinen Blog an, wie Sie diese beiden Frameworks gemeinsam verwenden:

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

Hinweis: Es gibt auch die Besseres Swing -Anwendungsrahmen

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. 

Ich weiß nicht viel darüber, aber es könnte sogar ein besserer Ausgangspunkt sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top