Если вы хотите, чтобы ячейки в строке имели специальное форматирование или тип данных, просто выполните то, что вы сделали для Customer
, и просто переключите столбец и строку, то есть я предполагаю, что одна запись в вашей таблице представлена одним столбцом.
Таким образом, просто сделать что-то вроде этого:
Report report = reports.get(col - 1); //made those names up but you should get the idea
switch (row) {
...
case 5:
double p = report.getPercentage(); //assuming 10% is stored as 0.1
return String.format("%.0f%%", p * 100); //%.0f means a floating point number with 0 fraction digits
...
}
В качестве альтернативы (. Особ, если ваша модель должна быть более гибкой, или вы просто кучу значений, например, в виде 2D массива) хранить тип (т.е. как отображать значение) на карте с индексом строки, столбца или ячейки (строки и столбца) в качестве ключа.
Update:
Как сказал mKorbel в комментарии, вы бы лучше пусть визуализатор сделать форматирование. Проблема, однако, в том, что вы не можете просто зарегистрировать рендерер на строку, поэтому вам придется придумать другое решение.
Два из них прямо сейчас поп в моей голове:
Подкласс JTable
для переопределения getCellRenderer(row, col)
для того, чтобы обеспечить PercentageCellRenderer
для строки, которая нуждается в ней. Вам нужно будет настроить, какую строку, например. в таблице.
Предоставить стандартный рендеринг ячеек, который проверяет строку и столбец в getTableCellRendererComponent()
и соответственно применяет форматирование.
Что вы подразумеваете под «типом столбца»? Другой тип данных? Разная семантика? – Thomas
Вопрос неясен: «Как дать каждой строке в модели JTable новый« тип »столбца». Что означает выделение строки для столбца? – DSquare
TableCellRenderer/Editor имеет параметр для int columnIndex и int rowIndex, используйте эти оба кодекса – mKorbel