Hintergrundfarbe für eine Zeile in JTable aktualisieren
Problem:
Beim Versuch, die Hintergrundfarbe zu aktualisieren einer Zeile in einer JTable funktioniert es nur bei der ersten Iteration und schlägt fehl anschließend.
Lösung:
Das Problem tritt auf, weil die setRowColor-Methode in der ColorTable-Klasse die Hintergrundfarbe für nachfolgende Zeilen nicht zurücksetzt. Um dieses Problem zu beheben, sollte der Code wie folgt geändert werden:
public void resetColor(Color color) { for (int i = 0; i < this.getRowCount(); i++) { // Reset all rows to the specified color this.setRowColor(i, color); } }
Um zu verhindern, dass die ausgewählten Zeilen eingefärbt werden, sollte außerdem die folgende Zeile innerhalb der PrepareRenderer-Methode hinzugefügt werden:
if (rowSelection != null && isRowSelected(row)) { continue; }
Dadurch wird sichergestellt, dass ausgewählte Zeilen ihre Standardhintergrundfarbe beibehalten.
Beispiel Code:
// Import necessary libraries... public class ColorTable extends JTable { private static final long serialVersionUID = 1L; private Map rowColor = new HashMap(); private Map columnColor = new HashMap(); private Color cellColor; private Color defaultColor; public ColorTable(TableModel model) { super(model); } public void setRowColor(int row, Color c) { rowColor.put(new Integer(row), c); } // ... Other methods remain the same ... @Override public Component prepareRenderer(TableCellRenderer renderer, int row, int column) { Component c = super.prepareRenderer(renderer, row, column); if (defaultColor == null) { defaultColor = c.getBackground(); } // Color order is as follows: // rowSelection, checkBox toggle for row color, column color, cell color if (rowSelection != null && isRowSelected(row)) { continue; } // ... return c; } // ... Other methods remain the same ... } // ... Other code remains the same ...
Das obige ist der detaillierte Inhalt vonWie aktualisiere ich die Hintergrundfarbe einer Zeile in einer JTable?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!