Я пытался удалить его или установить его ширину на 0, но когда я это сделал, он больше не выделяет строку оранжевым цветом
Я думаю, потому что ширина равна 0,визуализировать нечего, поэтому средство визуализации никогда не вызывается.
В любом случае, не используйте ширину ячейки, равную 0. Когда вы перемещаетесь по таблице, этот столбец все еще будет в фокусе, но пользователь выиграл 'Я знаю, что он имеет фокус, который запутает пользователя.
Вместо этого, если вы хотите скрыть столбец, удалите TableColumn
из TableColumnModel
.Вы получаете TableColumnModel
из JTable, используя метод getColumnModel()
.Удаление столбца из модели просто препятствует отображению столбца, но данные по-прежнему содержатся в TableModel
.
У меня есть JTable, который окрашивает строки в оранжевый цвет, когда данные в одном из столбцовis 'true'
Вы можете переопределить метод prepareRenderer(...)
JTable, чтобы сделать это легко.Это будет работать, даже если у вас есть столбцы с различными типами данных, поэтому нет необходимости создавать несколько средств визуализации.
Основная логика:
JTable table = new JTable(...)
{
public Component prepareRenderer(
TableCellRenderer renderer, int row, int column)
{
Component c = super.prepareRenderer(renderer, row, column);
if (!isRowSelected(row))
{
c.setBackground(getBackground());
int modelRow = convertRowIndexToModel(row);
boolean highlight = (Boolean)getModel().getValueAt(modelRow, ???);
if (highlight) c.setBackground(Color.ORANGE);
}
return c;
}
};
Извлечение Отображение строки таблицы для получения дополнительной информации и рабочего примера.Пример на вкладке «Данные» делает то, что вы хотите.