Swing CellRenderer für einzelne Zellen?

Lil_Ber

Mitglied
Hallo :)

Ich habe ganz viele Probleme mit dem CellRenderer und dafür ganz wenig Ahnung :D

Folgendes Vorhaben:

Ich habe eine JTable und einen Wert int row und einen Wert int col. Nun möchte ich einen CellRenderer implementieren. Dieser soll nur in der Zelle row / col die Backgroundfarbe ändern.
Die JTable ist in einer anderen Klasse implementiert als int row und int col berechnet wird - denn das geschieht in einer anderen Klasse.

Wo muss ich den CellRenderer implementieren? Und wie geht das?
Bisher habe ich das so versucht:


Code:
public void actionPerformed(ActionEvent e) {

        if (e.getActionCommand().equals("a")){
            int row=(comp.getFarbe().getText());
            int col=(comp.getWand().getText());   
   
            JTable table = c.getTable();
                   
            TableCellRenderer ren = new ColoredTableCellRenderer();
            table.setDefaultRenderer( GUI.class, ren );


und die andere Klasse, in der die JTable implementiert ist:

Code:
String[][] data = {
                {
                { "1", "2", "3", "4" },
                { "a", "b", "c", "d" },
               
        };

        String[] columnNames =  {
                "wanda", "wandb", "wandc", "wandd"
        };

JTable table = new JTable();
 

Harry Kane

Top Contributor
Das erste Argument in table.setDefaultRenderer steht für den Datentyp, den der Renderer verarbeiten kann. Wenn du deinen Renderer für alle Datentypen verwenden möchtest, sollte da Object.class stehen.
Ansonsten sieht das ganze nicht so falsch aus. Woran hakt es denn konkret?
 

Lil_Ber

Mitglied
entschuldige die späte antwort.
es hakt daran, dass ich nicht weis wie ich eine konkrete zelle ansteuern kann.

Ich möchte irgendwo row = 1 übergeben und col = 2 (zum beispiel) und dann soll der cellrenderer nur die Zelle 1,2 den hintergrund ändern
 

Harry Kane

Top Contributor
Das TableCellRenderer-interface definiert ein Methode
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
die von allen implementierenden Klassen mit Leben gefüllt werden muss. In der Parameterliste tauchen auch der Spalten- und Zeilenindex auf.
Wie sieht denn der Quälcode von ColoredTableCellRenderer aus?
 

Lil_Ber

Mitglied
Den habe ich noch nicht, das genau ist der Punkt wo ich nicht weiterkomme...mir ist auch nicht klar, wo ich den implementieren muss. Muss ich dafür eine eigene Klasse erstellen oder kommt der direkt beim actionListener rein?
Ich habe mir so etwas in der Art gedacht
Code:
class ColoredTableCellRenderer extends DefaultTableCellRenderer {
    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column){
            
       
   
        if(row==1&&column==1){
           
            Color selectionBackground = Color.BLACK;
            table.setSelectionBackground(selectionBackground);
            table.setValueAt(selectionBackground, row, column);
       
        }
       
        }
    
    
    
        return table;
    
    }

Hier kommt zwar keine Fehlermeldung aber die Zelle wird nicht verfärbt, auch wenn direkt über der if-Schleife row und col = 1 setze...
 
Zuletzt bearbeitet:

Harry Kane

Top Contributor
Muss ich dafür eine eigene Klasse erstellen oder kommt der direkt beim actionListener rein?
Zunächst mal musst du verstehen, wie ein TableCellRenderer funktioniert. Dann kannst du dir über den Rest Gedanken machen.
Ein TableCellRenderer dient dazu, den Inhalt einer Tabellenzelle zu visualisieren. Per default wird dazu eine Instanz von DefaultTableCellRenderer verwendet, der seinerseits JLabel erweitert. In der getTableCellRendererComponent-Methode von DefaultTableCellRenderer wird als Rückgabewert this verwendet, d. h. die DefaultTableCellRenderer Instanz gibt sich selbst zurück. Vorher formatiert sie sich basierend auf den Argumenten der getTableCellRendererComponent-Methode und setzt bei sich einen Text, der aus der toString()-Methode des übergebenenen value besteht.
Der return-Wert von "table" in deinem Beispiel ist Unsinn. Ausserdem überschreibst du im Renderer den Wert in der Tabelle.
Hier http://www.java2s.com/Tutorial/Java/0240__Swing/implementsTableCellRenderer.htm gibt es ein Beispiel für einen Renderer der Zellen färben kann. Sehr nachteilig an diesemn Beispiel ist, dass bei jedem Aufruf von getTableCellRendererComponent eine neue Instanz von JTextField erzeugt wird. Aber als Einführungsbeispiel um zu sehen wie ein Renderer grundsätzlich funktioniert sollte das erstmal reichen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M CellEditor und CellRenderer für eigene Klasse AWT, Swing, JavaFX & SWT 4
T Swing JTable cellRenderer mit jpg Hintergrundfarbe lässt sich nicht ändern. AWT, Swing, JavaFX & SWT 1
N AWT jTable CellRenderer AWT, Swing, JavaFX & SWT 6
G Border der Komponente bei Table CellRenderer überschreiben AWT, Swing, JavaFX & SWT 0
Developer_X Java JTable - Combobox + Checkbox - Cellrenderer + Editor AWT, Swing, JavaFX & SWT 3
S Verständnisproblem mit CellRenderer AWT, Swing, JavaFX & SWT 1
M Swing Jtable CellRenderer Parameter uebergeben AWT, Swing, JavaFX & SWT 4
K Swing JList und veränderte CellRenderer AWT, Swing, JavaFX & SWT 8
G JComboBox mit CellRenderer (Auswahl) AWT, Swing, JavaFX & SWT 11
J JTable: Problem bei CellRenderer AWT, Swing, JavaFX & SWT 3
S Swing Zelle einer JTable hervorheben (ohne CellRenderer) AWT, Swing, JavaFX & SWT 3
Spin CellRenderer Probleme bei JList AWT, Swing, JavaFX & SWT 4
S Swing Jlist - CellRenderer/ Selektion AWT, Swing, JavaFX & SWT 2
B JTable CellRenderer AWT, Swing, JavaFX & SWT 5
D Swing JList, CellRenderer und Model AWT, Swing, JavaFX & SWT 6
C Wieso funktionert der CellRenderer nicht? AWT, Swing, JavaFX & SWT 2
J CellRenderer einzelne zellen Hintergrund AWT, Swing, JavaFX & SWT 9
hdi Swing JTable: Mein CellRenderer ist ein Performance-Killer? AWT, Swing, JavaFX & SWT 7
E Swing JTable mit CellRenderer AWT, Swing, JavaFX & SWT 7
J Swing JXTable, vom CellRenderer gerendertes Value holen. AWT, Swing, JavaFX & SWT 5
J JList CellRenderer Null-Layoutpanel AWT, Swing, JavaFX & SWT 4
? Tabelle formatieren - auch ohne CellRenderer? AWT, Swing, JavaFX & SWT 6
H JTable und CellRenderer AWT, Swing, JavaFX & SWT 2
M CellRenderer in JTable AWT, Swing, JavaFX & SWT 11
D JList Cellrenderer fügt mehrfach ein AWT, Swing, JavaFX & SWT 2
G JTable, TableModel und CellRenderer AWT, Swing, JavaFX & SWT 3
K Verständnisfrage zum CellRenderer AWT, Swing, JavaFX & SWT 4
G [Problem] CellRenderer und ActionCommand AWT, Swing, JavaFX & SWT 5
K JTable - warum funktioniert mein CellRenderer nicht? AWT, Swing, JavaFX & SWT 9
G CellRenderer, der einige ImageIcons aneinanderreiht AWT, Swing, JavaFX & SWT 5
G JTable: Zellenhöhe mit neuem CellRenderer & Editor AWT, Swing, JavaFX & SWT 17
G CellRenderer funkt net AWT, Swing, JavaFX & SWT 5
T CellRenderer funzt net AWT, Swing, JavaFX & SWT 20
F JTable CellRenderer über boolean AWT, Swing, JavaFX & SWT 12
M Krieg keine CellRenderer Methode hin :( AWT, Swing, JavaFX & SWT 12
C JTable mit JPanel als CellRenderer AWT, Swing, JavaFX & SWT 2
G JTable CellRenderer-Problem AWT, Swing, JavaFX & SWT 4
Juelin setzen background color für selected Row im Tableview AWT, Swing, JavaFX & SWT 21
Juelin Für Java-Spezialisten AWT, Swing, JavaFX & SWT 4
H JTabel - RowFilter Daten für Berechnung filtern AWT, Swing, JavaFX & SWT 6
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
M Eigene Java Klasse für allgemeine Grafikelemente AWT, Swing, JavaFX & SWT 8
M Vokabelprogram - Schleife für Liste soll schrittweise durchlaufen werden AWT, Swing, JavaFX & SWT 3
tommybalbor JavaFx Anwendung klappt nicht für macOs Nutzern, wenn ich zwei dependecies bei maven hinzufüge AWT, Swing, JavaFX & SWT 6
I Libraries für AWT für andere Grafik-Frameworks tauglich machen AWT, Swing, JavaFX & SWT 6
R auto. Importanweisungen für javafx funktioniert in Eclipse nicht mehr AWT, Swing, JavaFX & SWT 4
komplettlost Vollbildmodus für MacOs Nutzer geht nicht AWT, Swing, JavaFX & SWT 13
D JavaFX Schadensberechnung für Kartenspiel AWT, Swing, JavaFX & SWT 1
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
Jose05 JavaFX: eigene FXML-Datei für einen Button AWT, Swing, JavaFX & SWT 3
L actionListener für Button AWT, Swing, JavaFX & SWT 97
izoards Textfeld für Zeit AWT, Swing, JavaFX & SWT 4
CptK Wie funktioniert contains() für Path2D.Double AWT, Swing, JavaFX & SWT 10
T Getter und Setter für eine Stage AWT, Swing, JavaFX & SWT 6
P Swing Programm hängt sich bei Buttondruck auf? (GUI für "Chatbot" erstellen) AWT, Swing, JavaFX & SWT 15
T Button für GUI programmieren AWT, Swing, JavaFX & SWT 1
Z Switch Case für Buttons AWT, Swing, JavaFX & SWT 8
M Hough-Transformation für Kreise und andere Formen AWT, Swing, JavaFX & SWT 3
kodela HTML-tags für JLabel AWT, Swing, JavaFX & SWT 9
E Keystroke für Ausschneiden läßt sich nicht ändern AWT, Swing, JavaFX & SWT 2
M Swing Cell Renderer für Zeilenumbruch in JTable AWT, Swing, JavaFX & SWT 0
MiMa Package Struktur für GUI Programmierung AWT, Swing, JavaFX & SWT 26
N JavaFX 1 Listener für mehrere ChoiceBoxen AWT, Swing, JavaFX & SWT 3
B eclipse für JavaFx setuppen AWT, Swing, JavaFX & SWT 4
K Swing Struktur für TreeTable rekursiv aufbauen AWT, Swing, JavaFX & SWT 17
A Swing JTextField an Button übergeben für Popup-Fenster funktioniert nicht AWT, Swing, JavaFX & SWT 3
H Ein Patten für das Gluon Mobile Framework AWT, Swing, JavaFX & SWT 7
J Gibt es einen Grund für 16x16 anstatt z.B. 15x15 Tiles ? AWT, Swing, JavaFX & SWT 10
F JFormattedTextField für kg und Währung AWT, Swing, JavaFX & SWT 6
V Swing für jedes Kästchen eine eigene Farbe AWT, Swing, JavaFX & SWT 2
F Wie bekomme ich den Wert der ComboBox in eine Variable gespeichert welche ich für meinen ActionListener nutzen kann? AWT, Swing, JavaFX & SWT 3
Soloeco JavaFX Dreifachklick für MenuButton erforderlich AWT, Swing, JavaFX & SWT 2
L JavaFX Lösungsvorschläge für dieses coole Control AWT, Swing, JavaFX & SWT 8
looparda Suche Lib für Visualisierung von Graphen AWT, Swing, JavaFX & SWT 12
G LayoutManager Beliebige Anzahl von Panels für LayoutManager AWT, Swing, JavaFX & SWT 3
L Ein Actionlistener für ein Textfeld, anstatt viele Actionlistener für ein Textfeld AWT, Swing, JavaFX & SWT 7
S Swing Finde Grund für NullPointerExeption nicht. AWT, Swing, JavaFX & SWT 2
W JavaFX (j)Unittests für GUI AWT, Swing, JavaFX & SWT 0
B JavaFX JavaFX TableView PropertyValueFactory für Werte aus HashMap AWT, Swing, JavaFX & SWT 2
SchmidiMC Swing Vorschläge für ein Design AWT, Swing, JavaFX & SWT 5
Z JavaFX Pane für wechselnde Sub-Panes mit Auto-Resize AWT, Swing, JavaFX & SWT 2
S 2D-Grafik affine Transformation für Text-Shape AWT, Swing, JavaFX & SWT 0
G Swing Variable Elemente für GroupLayout AWT, Swing, JavaFX & SWT 18
kodela Accalerator für einige Menüoptionen funktioniert nicht mehr AWT, Swing, JavaFX & SWT 3
P Swing Empfehlungen für einfaches Computerspiel AWT, Swing, JavaFX & SWT 4
L DragDropped für jede Node AWT, Swing, JavaFX & SWT 0
temi JavaFX Lösungsansatz für Umsetzung gesucht AWT, Swing, JavaFX & SWT 4
J Swing JavaProgramm für Verschlüssen für eine Datei AWT, Swing, JavaFX & SWT 19
D DatePicker für Java Swing AWT, Swing, JavaFX & SWT 2
MiMa Programmeinstellungen für Anwendung?? AWT, Swing, JavaFX & SWT 54
heinz ketchup While-Schleife in einem Service für GUI AWT, Swing, JavaFX & SWT 22
L JavaFX Renderer für JavaFX AWT, Swing, JavaFX & SWT 2
MiMa GUI Controller für Border Pane als MVC Modell AWT, Swing, JavaFX & SWT 1
L Font für Dashboard AWT, Swing, JavaFX & SWT 3
F Swing JColorChooser für die JToggleButtons AWT, Swing, JavaFX & SWT 5
S JavaFX Optimierung für verschiedene Auflösungen AWT, Swing, JavaFX & SWT 12
L JavaFX Animation für Panel wechsel AWT, Swing, JavaFX & SWT 3
T Swing Drag and Drop für JComponents AWT, Swing, JavaFX & SWT 1
Kloso Swing Pseudocode für Strafurzeichnung AWT, Swing, JavaFX & SWT 4
F Konstruktor für "Vier Gewinnt" AWT, Swing, JavaFX & SWT 10

Ähnliche Java Themen

Neue Themen


Oben