Poszukuję rozwiązania tego problemu: Mam plik programu Excel, który zawiera dane. Niektóre komórki mają żółte tło. Już stworzyłem kod do importowania tekstu do JTable, który działa dobrze. Ale chcę również zaimportować kolor komórki tła do konkretnych komórek. Dla uproszczenia tego przykładu nie używałem pętli, odczytu danych Excela ze źródła itp. Po przeczytaniu forum zrozumiałem, że potrzebuję CustomCellRenderer.Tylko komórki specyficzne dla koloru w JTable
Mam problem z tym podejściem, ponieważ ten kod początkowo poprawnie kolory komórek w kolumnie, ale kiedy zaczynam przewijać kolorowe komórki w tej tabeli, to całe kolumna powraca do żółtego. (patrz zrzut ekranu)
Pomyślałem, że mógłbym dodać instrukcję else, aby specjalnie zabarwić pozostałe komórki na białe, ale to podejście nie zadziała dla mnie, ponieważ nadpisałbym moje poprzednie wyniki komórek.
Czy możesz wskazać mi rozwiązanie tego problemu? (czy jest to błąd, czy oczekiwane zachowanie JTable?). Używam NetBeans i generator n drop GUI przeciągania
import java.awt.Color;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
public class MyRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
int[][] coordinatesYellow = new int[3][2];
//[row][column] these cells are yellow
coordinatesYellow[0][0] = 3;
coordinatesYellow[0][1] = 2;
coordinatesYellow[1][0] = 4;
coordinatesYellow[1][1] = 2;
coordinatesYellow[2][0] = 2;
coordinatesYellow[2][1] = 2;
for (int i = 0; i < 3; i++) {
if ((row == coordinatesYellow[i][0]) && (column == coordinatesYellow[i][1])) {
c.setBackground(Color.yellow);
}
}
return c;
}
}
// And this is the statement I use for calling the renderer:
// resultsTable.getColumnModel().getColumn(0).setCellRenderer(new MyRenderer());
@TT - Twój komentarz jest zasadniczo pełna odpowiedź. – tucuxi
@tucuxi Prawda, brzmiało to tak banalnie, że zamieściłem komentarz. Uczyniłem to odpowiedzią. –
Zobacz również http://stackoverflow.com/questions/22606227/colored-table-cells (może nawet być duplikatem ...) – Marco13