Ein TableModel für 2 JTable benutzen, aber mit unterschiedlicher Editier-Berechtigung

blub11

Mitglied
Hallo, mal eine Frage:

Kann ich mein eigenes TableModel (abgeleitet von DefaultTableModel) für 2 JTables verwenden, wobei das erste JTable (eine Eingabetabelle) die Editierung erlaubt, und die zweite JTable (Ausgabetabelle vergangener Eingaben) keine Editierung zulässt?

Eine Idee wäre, dass ich in mein eigenes Model das hier implementiere mit Standardwerten für das erste Model:

Code:
            boolean[] canEdit = new boolean [] {
                true, true, true, true
            }; 
                    
          @Override   
           public boolean isCellEditable(int row, int column){
                return canEdit[column];
          };

und dann irgendwie die Werte für das zweite Model von außen setze mittels eines Setters?
Dazu kommt dann aber ein zusätzliches Problem: Ich habe in der zweiten (Ausgabe) JTable eine Spalte mehr...

Auch könnte ich in der zweiten JTable ein DefaultTableModel nehmen, das wäre nicht weiter schlimm. Dann könnte ich den Code von hier drüber in die Implementierung dieses DefaultTableModels der Ausgabe-JTable packen.

Es mir nur um den wenigsten Aufwand..aber mit Möglichkeit 2 habe ich den glaub ich schon oder?
 

Akeshihiro

Erfahrenes Mitglied
Warum willst du das überhaupt so machen? Eine Tabelle wird in der Regel nur zur Darstellung von Datensätzen genommen, nicht um darin zu arbeiten. Wenn du einen neuen Datensatz anlegen oder einen Datensatz bearbeiten willst, dann geschieht das über eine dafür erstellte Maske (meist ein modaler Dialog).

Aber sogar wenn du den merkwürdigen Weg mit den zwei Tabellen gehen willst (ich weiß ja nicht, was du da machen willst), dann verwendet dennoch jede Tabelle ein eigenes Model, niemals das selbe. Die Daten, die hineinfließen, können ruhig die selben sein, z.B. aus einer Liste oder einem Array oder was auch immer.
 

blub11

Mitglied
Hi, ja ich hatte vllt. nen bisschen blöd ausgedrückt..natürlich wird für jede Tabelle ein eigenes TableModel genommen ;) Aber ich meine eine Klasse "TableModel" für zwei Tabellen, was ja auch geht..und für diese beiden Tabellen, bei der eine von beiden mehr Spalten als die andere hat, wollte ich die Editier-Berechtigungen setzen..
Es geht jetzt auch alles, habe folgende Methode implementiert:

Code:
        boolean[] canEdit = new boolean [] {//standardmäßig true, dann brauche ich nur für eine Tabelle die Berechtigungen setzen
            true, true, true, true
        }; 

        public void setCanEdit(boolean[] canEdit){
            this.canEdit = canEdit;
        }

Bin halt noch nen bisschen neu in Java und da ist mir so eine Möglichkeit nicht sofort ins Auge gesprungen ;)
Und das wars auch schon..