Position du curseur dans une JTable

Résolu
cs_bordeaux Messages postés 35 Date d'inscription lundi 6 décembre 2004 Statut Membre Dernière intervention 14 juin 2008 - 13 juin 2008 à 17:06
cs_bordeaux Messages postés 35 Date d'inscription lundi 6 décembre 2004 Statut Membre Dernière intervention 14 juin 2008 - 14 juin 2008 à 15:41
Bonjour,

j'aurais aimé savoir si il est possible de récupérer la position d'un curseur dans la cellule d'une JTable?

ps : Enoncé cours question difficile...

2 réponses

uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
14 juin 2008 à 08:20
Tu peus ajouter un "CaretListener" au "TableCellEditorComponent" (par type de colonne).
Dans "caretUpdate" tu peus récupérer la position du curseur dans la cellule éditée de la JTable.
Quelque chose comme ceci:

        addCaretListener(table);
...
private void addCaretListener(final JTable table) {    if (table null || table.getRowCount() 0) {
        throw new IllegalArgumentException();
    }
    List classes = new ArrayList();
    List columns = new ArrayList();
    for (int column = 0; column < table.getColumnCount(); column++) {
        classes.add(table.getModel().getColumnClass(column));
        columns.add(column);
    }
    for (Integer column : columns) {
        table.editCellAt(0, column);
        Component c = table.getCellEditor().getTableCellEditorComponent(
                table, table.getValueAt(0, column), false, 0, column);
        if (c instanceof JTextComponent) {
            ((JTextComponent)c).addCaretListener(new CaretListener() {
                @Override
                public void caretUpdate(CaretEvent e) {
                    System.out.println(e.getDot());
                }
            });
            table.getCellEditor().stopCellEditing();
        }
    }
}
3
cs_bordeaux Messages postés 35 Date d'inscription lundi 6 décembre 2004 Statut Membre Dernière intervention 14 juin 2008
14 juin 2008 à 15:41
Parfait et merci.

public class MaCellEditor extends DefaultCellEditor {
    private final static JTextField textEditor = new JTextField();
    private static int numeroLigne;
    public MaCellEditor () {
        super(textEditor);
        ToolTipManager.sharedInstance().registerComponent(textEditor);
        textEditor.addCaretListener(new CaretListener() {
            public void caretUpdate(final CaretEvent e) {
                textEditor.setToolTipText("Ligne :" + numeroLigne + 1
                        + " Colonne :" + e.getDot());
            }
        });
    }

et maintenant comme faire pour mettre à jour la tooltip?
0
Rejoignez-nous