JTable Spalten im nachhinein sperren

karl001

Grünschnabel
Hallo,
ich habe eine JTable erstellt mit einem DefaultTableModel welches erlaubt 2 Spalten zu editieren. Jetzt will ich auf Knopfdruck diese Spalten nicht editierbar machen ohne das ganze TableModel neu zu erstellen. Ich habs schon mit setEnabled(false) versucht, allerdings lässt sich dann auch nichts mehr selektieren. Vielen Dank im voraus.
Acky
 
Hallo hallo,

also ich habs nicht ausprobiert, aber es sollte gehen indem Du einfach in der Methode isCellEditable einen boolean Wert abfragst, der angibt ob bereits gesperrt wurde:

Code:
    public boolean isCellEditable(int row, int column) {
        if ((!table.isLocked()) && (column == 1)) return true;
        else return false;
    }

Wobei table das Objekt ist, welches das TableModel aufruft. Die Methode isCellEditable wird ja zur Laufzeit aufgerufen, also wird dementsprechend auch der Wert locked über die Funktion isLocked() in table aufgerufen. Sobald locked dann den Wert true annimmt (z.B. durch Knopfdruck), wird isCellEditable immer ein false liefern, was zur Folge hat, dass die Spalten nicht mehr editierbar sind.

Viele Grüße
Phil
 
Hmm das hatte ich bereits versucht, doch soblad ich auf locked gesetzt hab konnte ich es nicht mehr entsperren. Vllt habe ich etwas falsch gemacht. Ich werde es nocheinmal versuchen.

PS: Ja, diesmal klappts wunderbar. Vielen Dank!
 
Zuletzt bearbeitet:
Zurück