You can implement it the following way:
1) Override getColumnHeaderStates() in the model to return an additional unique StateKey for each column like this:
Code:
public StateKey[] getColumnHeaderStates() {
return new StateKey[]{ StateKey.get("column0"), StateKey.get("column1"), StateKey.get("column2") };
}
2) Override getColumnHeaderState(int column, int stateIdx) to return true for the respective column state like this:
Code:
public boolean getColumnHeaderState(int column, int stateIdx) {
return column == stateIdx;
}
This will result in column 0 having the animation state "column0" active, while column 1 has "column1" active.
Now you can assign the column header buttons a <select> image object (as overlay) which decides based on these states which image/icon to show.