Bloquer le déplacement d'une seule colonne Jtable java

Rosa - 27 juil. 2022 à 15:48
 flora - 7 sept. 2022 à 13:09

Bonjour,

Comment je peux figer une colonne dans le but de ne pas autoriser son déplacement .

j'ai essayé le " tatable.getTableHeader().setReorderingAllowed(false); " et ça fige toutes les colonnes.

Merci par avance :) 

2 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
10 août 2022 à 10:47

Salut,

Le plus propre serait de surcharger la méthode columnMoved de ton TableColumnModelListener pour gérer ça. Et également jouer avec les méthodes fromIndex & toIndex de ton TableColumnModelEvent pour déterminer s'il tu es sur une colonne fixe ou non.

++


Dev addict
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..." 

0
private int columnValue = -1;
private int columnNewValue = -1;
tbl_modele.getColumnModel().addColumnModelListener(new TableColumnModelListener()
{
    public void columnAdded(TableColumnModelEvent e) {}

    public void columnMarginChanged(ChangeEvent e) {}

    public void columnMoved(TableColumnModelEvent e)
    {
        if (columnValue == -1)
            columnValue = e.getFromIndex();

        columnNewValue = e.getToIndex();
    }

    public void columnRemoved(TableColumnModelEvent e) {}

    public void columnSelectionChanged(ListSelectionEvent e) {}
});

tbl_modele.getTableHeader().addMouseListener(new MouseAdapter()
{
    @Override
    public void mouseReleased(MouseEvent e)
    {
        if (columnValue != -1 && (columnValue == 0 || columnNewValue == 0))
            tbl_modele.moveColumn(columnNewValue, columnValue);

        columnValue = -1;
        columnNewValue = -1;
    }
});

j'ai essayé comme ça et n'a pas marché .

0
Rejoignez-nous