Je suis en train de développer une petite application graphique et, pour
cela, j'utilise SWING.
J'ai réussi à afficher un JTree sans problème. Quand on clique sur celui-ci
avec le bouton gauche de la souris, il sélectionne un élément de l'arbre :
on peut alors effectuer un getLastSelectedPathComponent() sur le JTree pour
récupérer l'élément sélectionné.
Je souhaiterai faire la même chose avec le bouton droit de la souris.
Comment faire ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Black Myst
Toto Le Ouf wrote:
Bonsoir à tous,
Je suis en train de développer une petite application graphique et, pour cela, j'utilise SWING. J'ai réussi à afficher un JTree sans problème. Quand on clique sur celui-ci avec le bouton gauche de la souris, il sélectionne un élément de l'arbre : on peut alors effectuer un getLastSelectedPathComponent() sur le JTree pour récupérer l'élément sélectionné. Je souhaiterai faire la même chose avec le bouton droit de la souris. Comment faire ?
Il faut que tu créer ton propre TreeCellEditor soit en surchageant DefaultTreeCellEditor, mais il reste un constructeur à faire pas forcement pratique.
class MyEditor extends DefaultTreeCellEditor { public boolean shouldSelectCell(EventObject event) { return event instanceOf MouseEvent; } }
Soit en créant son implem de zero: class MyEditor implements TreeCellEditor { public boolean shouldSelectCell(EventObject event) { return event instanceOf MouseEvent; }
public boolean isCellEditable(EventObject event) { return false; } // ... } Les méthodes addCellEditorListener, cancelCellEditing, removeCellEditorListener et stopCellEditing ne font rien, comme on ne retrera jamais en edition, on n'a pas besoin de se préparer à notifier de la fin de l'edition. getCellEditorValue et etTreeCellEditorComponent renvoie null, idem que précédement, on n'editera jamais réel le contenu de l'arbre.
puis : jtree.setCellEditor(new MyEditor());
cdt Black Myst
Toto Le Ouf wrote:
Bonsoir à tous,
Je suis en train de développer une petite application graphique et, pour
cela, j'utilise SWING.
J'ai réussi à afficher un JTree sans problème. Quand on clique sur celui-ci
avec le bouton gauche de la souris, il sélectionne un élément de l'arbre :
on peut alors effectuer un getLastSelectedPathComponent() sur le JTree pour
récupérer l'élément sélectionné.
Je souhaiterai faire la même chose avec le bouton droit de la souris.
Comment faire ?
Il faut que tu créer ton propre TreeCellEditor soit en surchageant
DefaultTreeCellEditor, mais il reste un constructeur à faire pas
forcement pratique.
class MyEditor extends DefaultTreeCellEditor {
public boolean shouldSelectCell(EventObject event) {
return event instanceOf MouseEvent;
}
}
Soit en créant son implem de zero:
class MyEditor implements TreeCellEditor {
public boolean shouldSelectCell(EventObject event) {
return event instanceOf MouseEvent;
}
public boolean isCellEditable(EventObject event) {
return false;
}
// ...
}
Les méthodes addCellEditorListener, cancelCellEditing,
removeCellEditorListener et stopCellEditing ne font rien, comme on ne
retrera jamais en edition, on n'a pas besoin de se préparer à notifier
de la fin de l'edition.
getCellEditorValue et etTreeCellEditorComponent renvoie null, idem que
précédement, on n'editera jamais réel le contenu de l'arbre.
Je suis en train de développer une petite application graphique et, pour cela, j'utilise SWING. J'ai réussi à afficher un JTree sans problème. Quand on clique sur celui-ci avec le bouton gauche de la souris, il sélectionne un élément de l'arbre : on peut alors effectuer un getLastSelectedPathComponent() sur le JTree pour récupérer l'élément sélectionné. Je souhaiterai faire la même chose avec le bouton droit de la souris. Comment faire ?
Il faut que tu créer ton propre TreeCellEditor soit en surchageant DefaultTreeCellEditor, mais il reste un constructeur à faire pas forcement pratique.
class MyEditor extends DefaultTreeCellEditor { public boolean shouldSelectCell(EventObject event) { return event instanceOf MouseEvent; } }
Soit en créant son implem de zero: class MyEditor implements TreeCellEditor { public boolean shouldSelectCell(EventObject event) { return event instanceOf MouseEvent; }
public boolean isCellEditable(EventObject event) { return false; } // ... } Les méthodes addCellEditorListener, cancelCellEditing, removeCellEditorListener et stopCellEditing ne font rien, comme on ne retrera jamais en edition, on n'a pas besoin de se préparer à notifier de la fin de l'edition. getCellEditorValue et etTreeCellEditorComponent renvoie null, idem que précédement, on n'editera jamais réel le contenu de l'arbre.