У меня была похожая проблема.Я хотел выровнять одну ячейку в зависимости от значения другой ячейки.Если ячейка X была NULL, то ячейка Y должна быть выровнена ПРАВО.Иначе, ячейка Y должна быть выровнена по левому краю.
Я нашел это решение действительно полезным.Он состоит в создании пользовательского рендера, расширяющего DefaultTableCellRender.
Вот код:
public class MyRender extends DefaultTableCellRenderer{
@Override
public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasFocus,int row,int column){
super.getTableCellRendererComponent (table, value, isSelected, hasFocus, row, column);
MyTableModel mtm = (MyTableModel)table.getModel();
switch(column){
case Y :
if(mla.getValueAt(row,X)!=null)
setHorizontalAlignment(SwingConstants.RIGHT);
else
setHorizontalAlignment(SwingConstants.LEFT);
break;
}
return this;
}
}
После этого просто создайте новый экземпляр MyRender и установите для него столбец Y, в данном случае.Я делаю это, когда загружаю информацию в таблицу.
MyRender render = new MyRender();
table.getColumnModel().getColumn(Y).setCellRender(render);
Надеюсь, это полезно!