TableCellRender - Zelle auf editier-/anklickbar setzen

skrobi

Mitglied
Hallo,

ich habe eine Tabelle mit 600 Zellen (B 15 * H 40) definiert. Der besseren optischen Abgrenzbarkeit wegen habe ich sie der Einfachheit halber mittels der Anweisung „table.enable(false);“ komplett auf sichtbar, aber nicht editierbar gesetzt. Mittels eines TableCellRenderes und der Anweisung „label.setBackground(Color.LIGHT_GRAY);“ wurden a‘ Block alle Zellen grau eingefärbt.

Zellen, die später selektier/editierbar sein sollen, habe ich ebenfalls mittels des vorgenannten TCR und zweier for… Loops
for (int areaRows = ……….
for (int areaCols = …….
setColor(areaRows,areaCols,Color.white);

auf weiß gesetzt.

Bis dahin funktioniert alles wie gewünscht.

Frage:
Besteht eine Möglichkeit, bzw. was muss ich tun, damit die 60 weiß gefärbten Zellen selektier-/editierbar innerhalb obiger Loops gesetzt werden, also anklickbar sind
z.B.: ….setCell„table.enable(true);“ so, oder so ähnlich, oder sonst wie ???

Vielen Dank für eine hilfreiche Antwort.
mfG skrobi
 

KonradN

Super-Moderator
Mitarbeiter
Ohne irgendwas getestet zu haben: Statt auf der Tabelle enable(false) aufzurufen, solltest Du das direkt auf den Zellen machen können. Sprich: Beim TableCellRenderer wird ja eine Component zurück gegeben und mein erster Versuch wäre, dass man da halt enable(boolean) aufrufen würde.

Aber das ist jetzt nichts, das ich ausgetestet habe. Bei so Fragen kann es interessant sein, ein minimales Beispiel zu erzeugen, bei dem man dann auch schnell so eine Idee ausprobieren kann. Sowas im Rahmen einer Antwort erst aufzubauen kostet in der Regel zu viel Zeit.
 

mihe7

Top Contributor
Für solche Zwecke kann man sich wunderbar ein TableModel schreiben. isCellEditable() liefert dann einfach true oder false, um den Rest kümmert sich die JTable automatisch. Man kann hier auch schön das Decorator-Pattern einsetzen, wenn man will. Oft beantwortet sich die Frage nach der Editierbarkeit aber auch aus den Daten oder zumindest anhand einer Logik, die sich in isCellEditable() abbilden lässt.
 

Neumi5694

Top Contributor
Im Normalfall (kommt wohl auf das Look & Feel an, aber ich kenn's nur so aus Nimbus, Windows, FlatLaf und Metal) hat isCellEditable() keine optische Auswirkung. Die Zelle reagiert dann einfach nicht. Ist ja auch durchaus sinnvoll, man will ja z.B. Zeilenindizes nicht editierbar haben, die sollen aber trotzdem nicht ausgegraut sein.

Wenn sichtbar sein soll, ob eine Zelle editierbar ist oder nicht, dann kannst du das im Cell-Renderer über die von mihe7 genannte Methode abfragen und die Komponente entsprechend anpassen, natürlich auch abhängig von column (siehe Zeilenindexbeispiel).
 

skrobi

Mitglied
Hallo KonradN, mihe7, Neumi5694,

Feedback zu unserem Erfolg!

Java:
//  table.enable(false);
//  entfällt und wird ersetzt durch:

    DefaultTableModel WORKTAB = new DefaultTableModel(content, columnNames)
//  ###########################################################################           
//  W A H L W E I S E   T A B E L L E N Z E L L E N   E D I T I E R B A R
//    B Z W.   N I C H T - E D I T I E R B A R   S E T Z E N               
//    ===========================================================================               
    {
    public boolean isCellEditable( int rowIndex , int columnIndex) {
              if ((rowIndex    >= 14  &&  rowIndex    <= 22  &&
                   columnIndex >= 3   &&  columnIndex <= 6)  ||
               (rowIndex    >= 18  &&  rowIndex    <= 21  &&  columnIndex == 2))         
                  {
                   return true;          // TabZelle EDITIERBAR
              } else {
                      return false;      // TabZelle NICHT-EDITIERBAR
                     }
           }
    };

Funktioniert bestens.
Vielen Dank und Gruss
skrobi
 

mihe7

Top Contributor
Oder in kurz:
Java:
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
    return rowIndex >= 14 && rowIndex <= 22 && columnIndex >= 3 && columnIndex <= 6 ||
            rowIndex >= 18 && rowIndex <= 21 && columnIndex == 2;
}
EDIT: weitere tausend Leerzeichen entfernt :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T TableCellRender nach Werten AWT, Swing, JavaFX & SWT 2
P TableCellRender für ALLE Spalten AWT, Swing, JavaFX & SWT 10
W Kleine Sub-Tabelle in SpreadsheetView-Zelle anzeigen AWT, Swing, JavaFX & SWT 9
F Best-Practise: JTable Text in Zelle zu groß AWT, Swing, JavaFX & SWT 2
missy72 JavaFX TableView / TableColumn / ObservableList / zwei Werte in einer Zelle AWT, Swing, JavaFX & SWT 2
HoT Einzelne Zelle in JTable Rahmen unten setzen AWT, Swing, JavaFX & SWT 24
P JavaFX aktuelle Tabellenzeile bei Choice-Box-Auswahl in Zelle ermitteln AWT, Swing, JavaFX & SWT 28
T Zelle- und die Zeile-Farbenwechsel bei der Selektion in der Tabelle AWT, Swing, JavaFX & SWT 4
P JavaFX TableView Zelle markieren AWT, Swing, JavaFX & SWT 3
W Swing JTable Zeilenumbruch innerhalb einer Zelle AWT, Swing, JavaFX & SWT 3
M Swing Automatischer Editorstart in JTable-Zelle AWT, Swing, JavaFX & SWT 5
S JavaFX TableView einzelne Zelle Layout zuweisen AWT, Swing, JavaFX & SWT 3
M Wert einer Zelle aus JTable ziehen AWT, Swing, JavaFX & SWT 4
P Fokus auf Zelle in JTable AWT, Swing, JavaFX & SWT 1
LexeB4F Zelle in JTable gezielt einfärben AWT, Swing, JavaFX & SWT 4
LexeB4F JTable mehrere Zelle selektieren und inhalte Löschen.. Ideen gesucht AWT, Swing, JavaFX & SWT 1
K Swing JTable mit ImageIcon und Text in einer Zelle AWT, Swing, JavaFX & SWT 1
E JavaFX TableView mit Rechtsklick Zelle auswählen AWT, Swing, JavaFX & SWT 8
E JTable Hintergrund von geklickter Zelle ändern AWT, Swing, JavaFX & SWT 2
J CellFactory in Abhängigkeit von anderer Zelle AWT, Swing, JavaFX & SWT 4
M JTable: Prüfen ob Zelle leer ist AWT, Swing, JavaFX & SWT 5
O Swing JTable - Zelle fokussieren AWT, Swing, JavaFX & SWT 10
L JTable selektierte Zelle in Bearbeitungs Modus AWT, Swing, JavaFX & SWT 2
H Combobox in einer einzelnen Zelle der Jtable AWT, Swing, JavaFX & SWT 2
R Swing Hintergrundfarbe der Zelle in einer JTable bei Markierung AWT, Swing, JavaFX & SWT 2
M Jtable Objecte aus Zelle AWT, Swing, JavaFX & SWT 13
M Beim Start von TableEditor Inhalt der Zelle markieren. AWT, Swing, JavaFX & SWT 2
S Swing Zelle einer JTable hervorheben (ohne CellRenderer) AWT, Swing, JavaFX & SWT 3
A JTable Zelle markieren von bis und Löschen AWT, Swing, JavaFX & SWT 6
F JTable soll mit Buttons befüllt werden, aber nicht in jede Zelle einer Spalte AWT, Swing, JavaFX & SWT 3
T DefaultTableCellRenderer Farbe bestimmter Zelle ändern AWT, Swing, JavaFX & SWT 2
GianaSisters Swing ComboBox im jTable (in bestimmter Zelle nicht über die ganze Spalte) AWT, Swing, JavaFX & SWT 4
O JButton in Zelle von JTable AWT, Swing, JavaFX & SWT 4
K Tabellen Inhalt ( Zelle ) Modifizieren AWT, Swing, JavaFX & SWT 2
J Zelle eine JTable ändern AWT, Swing, JavaFX & SWT 3
R Drag an Drop JTable Zelle AWT, Swing, JavaFX & SWT 6
T JTable, Popup Fester per Rechtsklick auf Zelle AWT, Swing, JavaFX & SWT 19
H variable Höhe einer JTextArea (als Renderer/Editor) als Zelle einer JTable AWT, Swing, JavaFX & SWT 9
C Swing JTable zeigt in jeder Zelle einer Reihe denselben Inhalt AWT, Swing, JavaFX & SWT 2
lenniii Zelle in JTable ändern AWT, Swing, JavaFX & SWT 2
J Swing JTable, jede Zelle ein anderer Title im TitledBorder AWT, Swing, JavaFX & SWT 5
D JTables, Test highlighten innerhalb einer Zelle AWT, Swing, JavaFX & SWT 5
S Swing JTable nach einer Änderung einer Zelle komplett aktualisieren. AWT, Swing, JavaFX & SWT 10
N Methode zum ermitteln der editierte Zeile/Zelle in jTable AWT, Swing, JavaFX & SWT 8
C Swing JTable Zelle mit Einfachklick editieren AWT, Swing, JavaFX & SWT 3
C JTable: Mehrere Farben in einer Zelle darstellen AWT, Swing, JavaFX & SWT 10
D Swing Farbige Zelle ohne DefaultTableCellRenderer AWT, Swing, JavaFX & SWT 17
D Swing Farbige Zelle ohne DefaultTableCellRenderer AWT, Swing, JavaFX & SWT 4
T Swing JTable - true zurückbekommen, wenn der Cursor in einer Zelle blinkt AWT, Swing, JavaFX & SWT 7
C JTable markierte Zelle wird bei removeRow nicht mit gelöscht AWT, Swing, JavaFX & SWT 6
Dit_ Verschiedene Icons in einer JTable-Zelle AWT, Swing, JavaFX & SWT 2
A JTable Zelle Padding AWT, Swing, JavaFX & SWT 9
R JTable Hintergrund der Zeile abhängig von Inhalt einer Zelle verändern AWT, Swing, JavaFX & SWT 3
S Swing DnD: Wie finde ich heraus, von welcher Zelle aus im JTable der Drag gestartet wurde? AWT, Swing, JavaFX & SWT 3
U LayoutManager [GBL] Component aus einer Zelle löschen AWT, Swing, JavaFX & SWT 2
E Zelle in JTable nach klick markieren AWT, Swing, JavaFX & SWT 2
O JTable Zelle mit "ENTER" in Editmode setzen AWT, Swing, JavaFX & SWT 4
eskimo328 JTable nächste Zelle nach Eingabe einer Ziffer AWT, Swing, JavaFX & SWT 5
B Swing Einzelne Zelle in JTable soll NICHT auswählbar sein AWT, Swing, JavaFX & SWT 9
A Swing JTable Icon nur in einer Zelle AWT, Swing, JavaFX & SWT 2
B Swing JTable merkt sich die zuletzt selektierte Zelle AWT, Swing, JavaFX & SWT 3
T einzelne Zelle einer JTable auswählen und Hintergrundfarbe ändern AWT, Swing, JavaFX & SWT 2
M JTable - verlassen einer Zelle AWT, Swing, JavaFX & SWT 15
R JTable Darstellen der selektierten Zelle braucht lange AWT, Swing, JavaFX & SWT 7
S JTable Probleme wenn ich Zelle verlasse AWT, Swing, JavaFX & SWT 4
P Für den Inhalt einer Zelle (aus Tabelle) STRG-C anwenden AWT, Swing, JavaFX & SWT 2
S Welches Event beim ändern einer Zelle in einer JTable AWT, Swing, JavaFX & SWT 4
S Welches Event beim auswählen einer Zelle? [JTable] AWT, Swing, JavaFX & SWT 3
A Multiple Zeilen in einer JTable Zelle AWT, Swing, JavaFX & SWT 6
W MouseListener für jede Zelle einer JTable AWT, Swing, JavaFX & SWT 4
V JTable verliert Fokus, wie offene Zelle schliessen? AWT, Swing, JavaFX & SWT 5
G jTable, spezille Zelle automatisch füllen AWT, Swing, JavaFX & SWT 13
J JTable: Einzelne Zelle selektieren AWT, Swing, JavaFX & SWT 6
T JPanel in JTable Zelle adden AWT, Swing, JavaFX & SWT 7
T JTable-Zelle mittels JFileChooser befüllen AWT, Swing, JavaFX & SWT 5
S JTable zwei Text-Zeilen in einer Zelle AWT, Swing, JavaFX & SWT 2
N JTable: Informiert werden, wenn User eine Zelle editiert hat AWT, Swing, JavaFX & SWT 2
M JTable: Editieren einer Zelle "von außen" abbreche AWT, Swing, JavaFX & SWT 2
M JTable Zelle ändern -> andere Zellen mit ändern AWT, Swing, JavaFX & SWT 5
S JCbox in Jtable Zelle nur anzeigen , wenn JCombobox ="a AWT, Swing, JavaFX & SWT 3
S Eine Zeile zu einer JTable hinzufügen wo Zelle selektiert is AWT, Swing, JavaFX & SWT 4
M JTable Zelle editieren AWT, Swing, JavaFX & SWT 2
S jTable Font einer Zelle ändern AWT, Swing, JavaFX & SWT 5
G Bei JTable eine bestimmte Zelle färben AWT, Swing, JavaFX & SWT 11
V JTable Zelle über befehl "selecten"? AWT, Swing, JavaFX & SWT 5
F Selectierung einer Zelle AWT, Swing, JavaFX & SWT 5
G JTable-Zeile/Zelle markieren und mir Shortcut in Arbeitsspei AWT, Swing, JavaFX & SWT 3
D JTable: Focus auf Zelle markiert ihren Text zum editieren AWT, Swing, JavaFX & SWT 2
S Farbe einer Zelle in JTable ändern AWT, Swing, JavaFX & SWT 13
J JList-Item ind JTable-Zelle auswählen. AWT, Swing, JavaFX & SWT 5
E TableCellEditor für jede Zelle AWT, Swing, JavaFX & SWT 4
R JTable: Jede Zelle mit eigenem ToolTip belegen AWT, Swing, JavaFX & SWT 5
S Welche Zelle in DefaultTableCellRenderer? AWT, Swing, JavaFX & SWT 2
R Drag & Drop einer einzelnen Zelle (JTable) AWT, Swing, JavaFX & SWT 2
T JTable Focus auf Zelle setzen AWT, Swing, JavaFX & SWT 3
R Focus durch "tabben" von JTable Zelle auf andere K AWT, Swing, JavaFX & SWT 8
V JTable: Bei Klick in Zelle -> Ganze Zeile markeiren AWT, Swing, JavaFX & SWT 7
W JTable und mehrere Components in einer Zelle AWT, Swing, JavaFX & SWT 4
S JTree in einer JTable-Zelle AWT, Swing, JavaFX & SWT 6
G JTable: Rahmen bei Focus um Zelle AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben