Witam,
w komórkach JTable chcę przechowywać tekst o różnych kolorach, więc metoda setForegrond() odpada, w jaki sposób mogę to uzyskać ?
0
0
Komórka tabeli to tak naprawdę JLabele.
Za pomocą funkcji setCellRenderer można jednak to zmienić i elementami tabeli może być dowolny komponent(zwykle jest to zmieniony DefaultTableCellRenderer - klasa która rozszerza JLabel)
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html (Using Custom Renderers)
http://www.roseindia.net/javatutorials/multi_line_cells_in_jtable.shtml
Przykład prostego CellRenderera(kolor tekstu w szachownicę)
public class ColorCellRenderer extends DefaultTableCellRenderer{
public ColorCellRenderer() {}
public Component getTableCellRendererComponent(
JTable table, Object obj,
boolean isSelected, boolean hasFocus,
int row, int column) {
super.getTableCellRendererComponent(table, obj, isSelected, hasFocus, row, column);
this.setForeground((((row & 1) ^ (column & 1)) == 1) ? Color.RED : Color.GREEN);
return this;
}
}
Zastosowanie:
TableColumnModel columnModel = table.getColumnModel();
for (int i = 0; i < columnModel.getColumnCount(); i++) {
columnModel.getColumn(i).setCellRenderer(new ColorCellRenderer());
}
0
Dzięki za odpowiedź, dzisiaj na pewno przetestuję i dam znać o postępie =]