Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich möchte gerne eine Spalte des JTables unsichtbar machen. Mit column.setMaxWidth(0); geht das aber zum Beispiel nicht. In der Doku habe ich auch keine entsprechende Methode dafür gefunden.
Am elegantesten geht sowas mit Deinem eigenen TableModel, wo Du die Methode getValueAt() überschreibst.
Such mal hier im Forum, da gibt es schon was zum TableModel.
Ich will sie dauerhaft unsichtbar lassen. In meiner Datenstruktur muss sie aber drin sein.
Der Grund ist, dass ich die Tabelle mit Inhalten einer SQL-Datenbank fülle. Da hat jede Zeile ja eine ID. Diese ID brauche ich dann, wenn eine Zeile der Tabelle angeklickt wird. Ansonsten soll sie aber verdeckt bleiben.
Ahhh, immer diese doppelten Vectoren. Wenn bei Dir eine Zeile einem Datensatz in der Datenbank entspricht, warum machst Du dann nicht eine Klasse Datensatz mit den Feldern Deiner Datenbank.
Und in Deinem TableModel benutzt Du einen Vector aus Datensätzen.
Das sieht dann in etwas so aus:
rowData ist der Vector aus Datensätzen, TableRow der Datensatz.
Code:
/** return the value of specified cell */
public Object getValueAt(int row, int col) {
TableRow tableRow = (TableRow)rowData.elementAt(row);
switch(col) {
case 0: return tableRow.id;
case 1: return tableRow.irgendwas;
case 2: return tableRow.irgendwasanderes;
default: {
throw new IllegalArgumentException("bad column " + col);
}
}
}
/** set value at specified cell */
public void setValueAt(Object value, int row, int column) {
TableRow tableRow = (TableRow)rowData.elementAt(row);
switch(column) {
// ID
case 0: tableRow.id = (String) value; break;
case 1: tableRow.irgendwas = (String) value; break;
case 2: tableRow.irgendwasanderes = (String) value; break;
}
// notify table that rows are updated
this.fireTableRowsUpdated(row, row);
}
Nur dass in Deinem Fall eben keine Column mit der ID angezeigt wird.
Immer ein bißchen mehr objektorientiert denken, dann wird auch der Code übersichtlicher und sprechender.