Мой код довольно длинный, поэтому я делаю краткий пример моей проблемы.Java - JTable Custom TableCellRenderer + Reordering Allowed
У меня есть JTable с 2 столбцами, содержащими номера. Мне нужен один столбец, скажем, столбец B для визуализации по-разному. Вот почему я создал клиента TableCellRenderer, который преобразует число в JPanel (несколько значков, текст и т. Д.). Я устанавливаю класс столбца B в JPanel и колонке А к номеру при создании JTable:
table = new JTable(model)
{
public Class getColumnClass(int column)
{
if(column == 1)
{
return Number.class;
}
if(column == 2)
{
return JPanel.class;
}
return super.getColumnClass(column);
}
}
table.setDefaultRenderer(JPanel.class, (TableCellRenderer) new RendererCurrency());
DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
centerRenderer.setHorizontalAlignment(JLabel.CENTER);
table.setDefaultRenderer(Number.class , centerRenderer);
Все работает отлично до сих пор, обе колонки показывают правильное значение и получить оказывается правильным. Проблема начинается, когда я хочу, чтобы Reordering Allowed = true.
Как только вы переключитесь столбцы в запущенном ПО колонны и ее значения будут коммутируемыми ...
но не визуализатор
Это приводит к колонку A оказанных и колонки B, чтобы быть стандартным, где он должен быть наоборот.
Это, вероятно, потому, что я установил класс для определенного индекса столбца, но я не знаю, как еще я должен это делать.
использовать методы 'table.convertColumnIndexToModel()' и 'table.convertColumnIndexToView()', чтобы получить правильный columnindex. – Manu