JTable, kolorowy tekst w komórkach

0

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

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 =]

1 użytkowników online, w tym zalogowanych: 0, gości: 1