Несколько строк, окрашенных по-разному в одну и ту же ячейку JTable - PullRequest
3 голосов
/ 13 мая 2009

Предположим, у вас есть JTable, и для каждой ячейки вы хотите отобразить три строки разного цвета, скажем, value1 (красный), value2 (синий), value3 (зеленый).

Я переопределил getTableCellRendererComponent из DefaultTableCellRenderer, но метод setForeground(Color) дает уникальный цвет для всей строки, показанной в ячейке.

@Override
public Component getTableCellRendererComponent(JTable table, Object value,
        boolean isSelected, boolean hasFocus, int row, int column) {
    String s = table.getModel().getValueAt(row,column).toString();

    StringTokenizer st = new StringTokenizer(s," ");
    int nToken=st.countTokens();

    value1=st.nextToken();
    value2=st.nextToken();
    value3=st.nextToken();
    // so now all the values are blue...
    setForeground(Color.blue);

    return super.getTableCellRendererComponent(table, value, isSelected,
            hasFocus, row, column);

}

Ответы [ 2 ]

3 голосов
/ 13 мая 2009

JIDE предоставляет StyledLabel в качестве части общего уровня с открытым исходным кодом, что именно то, что вам нужно, и в 10 раз проще, чем что-либо реализовывать самостоятельно.

https://jide -oss.dev.java.net /

alt text

2 голосов
/ 13 мая 2009

Рендерером по умолчанию для таблицы ячеек является JLabel. Этот компонент поддерживает теги HTML. Самое простое решение, которое вы можете иметь, - это использовать HTML для рендеринга строк разными цветами. Таким образом, вы можете построить строку, такую ​​как:

 <html><font color="blue">A String</font><font color="red">Another String</font></html>

И установите его в ячейку, и вам не нужно беспокоиться о визуализаторе.

Большинство компонентов Swing позволяют использовать HTML, это касается не только таблиц.

Другая возможность состоит в том, что вы создаете класс, исходящий из JComponent, и программируете paintComponent (), чтобы он рисовал эти три строки разными цветами. Затем вы можете установить этот компонент в качестве средства визуализации. Но это намного сложнее. Поскольку средство рендеринга работает как «штамп», оно будет печатать правильные цвета при рисовании ячеек. Это полезно, если вам нужно, например, нарисовать чрезвычайно сложную и нестандартную графику в ячейке.

Я бы остановился на использовании HTML, если у вас нет огромного количества ячеек.

...