Bestimmte Spalten nicht editierbar machen

Status
Nicht offen für weitere Antworten.

Alex_winf01

Top Contributor
Ich möchte nicht die gesamte Tabelle, sondern nur bestimmte Spalten nicht editierbar machen. Ich habe die FAQ gelesen! Ich weiss, dass ich mit isCellEditable() die Zellen auf editierbar/nicht editierbar stellen kann.

Das ist mein TD1Model:

Code:
class TD1Model extends DefaultTableModel 
{
    public TD1Model(Object[][] data, String[] labels) 
    {
        super( data, ( Object[] ) labels );
    }
    
    /*isCellEditable ist für die Editierbarkeit zuständig*/
    public boolean isCellEditable(int row, int column) 
    {
    	return false; 
    }   
}

Rufe ich jetzt die Methode wie folgt auf:

Code:
table.isCellEditable(0,3);

kann ich in der Table GAR KEINE Zelle mehr editieren. Ich will aber nur bestimmte Spalten und Zeilen editierbar machen (z. B. Spalte 3, 5, 8) und die letzten drei Zeilen. Es soll dann die komplette Spalte 3 und die komplette letzten drei Zeilen nicht editierbar sein. Der Rest sehr wohl.

Kan mir da jemand helfen?
 
Alex_winf01 hat gesagt.:
Ich möchte nicht die gesamte Tabelle, sondern nur bestimmte Spalten nicht editierbar machen. Ich habe die FAQ gelesen! Ich weiss, dass ich mit isCellEditable() die Zellen auf editierbar/nicht editierbar stellen kann.
Genau das ist der Fehler. Damit stellt man nicht zellen auf editierbar, sondern gibt zurück ob eine Zelle editierbar ist.
 
In die isCellEditable(int, int) schreibst du halt rein, dass er bei column=3,5,8 bzw. row=(die letzten drei) true, ansonsten false zurückliefert.
 
@ SamHotte

Ich bin noch auf folgendes Problem gestossen:

Die letzten drei Zeilen sind flexibel. D. h. der Anwender kann Zeilen einfügen und auch wieder löschen. Normalerweise spreche ich die dann z. B. für die vorletzte Zeile über
Code:
tbl.getRowCount() -
an. In isCellEditable() kann ich das nicht. Wie kann ich das umgehen?
 
Wieso sollte das dort nicht gehen? Beide Methoden sind doch in demselben Interface (TableModel) definiert!?
 
z.B. durch ein zusätzliches Attribut im TableModel (nonEditableRowCount), dass du in isCellEditable() ansprichst und das bei der Initialisierung des TableModel getRowCount-3 zugewiesen bekommt.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben