Per catturare l'evento del click del mouse sull'header usi:
codice:
this.table.getTableHeader().addMouseListener(new MouseAdapter()
{
@Override
public void mouseClicked(MouseEvent event)
{
if(event.getButton() == MouseEvent.BUTTON3) //tasto dx
{
JTableHeader header = (JTableHeader)event.getSource();
//blabla....
}
}
}
);
Per creare il menù popup, usi JPopupMenu e aggiungi un JMenuItem per ogni colonna della tabella.
Infine, considera questo codice:
codice:
//rimuovo la colonna 0
int index = 0;
TableColumnModel colModel = this.table.getColumnModel();
TableColumn col = colModel.getColumn(index);
colModel.removeColumn(col);
...
...
...
// inserisco di nuovo la colonna e la ricolloco nella posizione iniziale
int count = colModel.getColumnCount();
colModel.addColumn(col);
colModel.moveColumn(count, index);
Puoi incapsulare questa logica in una classe che implementa TableColumnModel. Non ti assicuro che sia il metodo migliore però.
Se non hai familiarità con questi argomenti, ti consiglio di studiarteli da qualche parte altrimenti difficilmente riuscirai a tirar su quello che desideri