Salve galera…
Seguinte, eu fiz uma alteração na minha JTable quando clico no Header da coluna, eu faço uma ordenação e mudo o texto do Header.
faço assim.
// quando clicar no cabeçalho da jtable
public void gradeClickHeanderJTable(){
// evento de click no cabeçalho
final JTableHeader h = grade.getTableHeader(); //pego o header da JTable
h.addMouseListener(new MouseAdapter() { //adiciono o listener não a um botão, mas ao header
public void mouseClicked(MouseEvent e) {
final int colIndex = h.columnAtPoint(new Point(e.getX(), e.getY()));
if(colIndex==0){ // se o clique for na coluna 0 ele nao faz nada
return;
}
//limpar ▲ e ▼ de todos o headers da jtable
for(int i=0; i < grade.getColumnCount();i++){
grade.getColumnModel().getColumn(i).setHeaderValue(grade.getColumnModel().getColumn(i).getHeaderValue().toString().replaceAll("▼",""));
grade.getColumnModel().getColumn(i).setHeaderValue(grade.getColumnModel().getColumn(i).getHeaderValue().toString().replaceAll("▲",""));
}
grade.setAutoCreateColumnsFromModel(false);
new ReordenarColunaJTable().sortAllRowsBy(modelo, colIndex,ascending); // ascending eh uma variavel de ambiente boolean
if(ascending){
ascending = false;
grade.getTableHeader().getColumnModel().getColumn(colIndex).setHeaderValue(grade.getColumnModel().getColumn(colIndex).getHeaderValue()+"▼");
}else{
ascending = true;
grade.getTableHeader().getColumnModel().getColumn(colIndex).setHeaderValue(grade.getColumnModel().getColumn(colIndex).getHeaderValue()+"▲");
}
grade.setSelectionMode(javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
grade.setColumnSelectionAllowed(true);
grade.addColumnSelectionInterval(colIndex,colIndex);
grade.addRowSelectionInterval(0,grade.getRowCount()-1);
}
});
}
O que acontece é que preciso proibir o esquema de arrastar coluna da JTable…Entaum pesquisando encontrei o setReorderingAllowed(false). Mas quando desativo esta propriedade ela desabilita e não permite mais o metodo q fiz para alterar a ordenação que é o q coloquei no code desse post.
Como resolver isso ??
obrigado.