javafx, TableView: détecter un double-clic sur une cellule
Donné une TableView, j'ai besoin de détecter le double-clic sur une cellule.
tableView.setOnMouseClicked(new EventHandler<MouseEvent>()
{
@Override
public void handle(MouseEvent event)
{
if(event.getClickCount()>1)
{
System.out.println("double clicked!");
}
}
});
Comment déterminer la cellule sur laquelle la souris a été cliqué?
Vous devez vous connecter pour publier un commentaire.
Exemple de Code.
Exécutez le "Exemple 12-11: Solution Alternative De la Cellule d'Édition" de officiel tableview tutoriel.
Remplacez les points suivants:
Pas besoin de
EditingCell
depuis vos cellules ne sont pas modifiables. La cellule de l'usine est utilisée pour la cellule de rendu. Donc, on peut mettre n'importe quel nœud de contrôle/d'autre que par défautLabeled
à l'aide de la cellule setGraphics() la méthode. OMI, vous ne pouvez pas accéder à la cellule par défaut directement donc vous devez définir votre propre usine cellulaire pour être en mesure de mettre le filtre d'événements sur la cellule.myCol.setCellFactory(cellFactory);
j'ai inclus un exemple qui peut être utilisé pour l'ensemble de la table si vous voulez une cellule à la fois modifiable et répondre de façon indépendante à des événements de souris.JavaFX permet de configurer plusieurs auditeurs par cellule (je ne dis pas que cela est bon ou mauvais, juste que vous le pouvez). Chaque auditeur va exécuter votre code si vous avez le code mis à exécution une réponse pour le port d'écoute spécifique pour la colonne/rangée. Pour capturer les cellules clics de souris, j'utilise la suite:
Vous pouvez le voir dans le code ci-dessus, sur les colonnes que je veux faire quelque chose de basé sur un clic de souris, j'ai le code:
if ( col == <int> ) { ... do something ... }
J'ai aussi ces colonnes permettent pas d'édition:
thisCol.setEditable(false);
Les lignes que je veux modifier j'ai
.setEditable(true)
, mais n'ont pas de réponse fourni avec un clic de souris.Cellule d'édition par défaut à 2 clics de souris. Vous pouvez changer le code ci-dessus pour capturer différents événements de la souris sur une cellule, de sorte que vous pouvez toujours modifier la cellule avec 2 clics de souris, ou d'ouvrir une URL, une boîte de dialogue, etc., avec n'importe quel autre événement de souris déterminé par vous. TableView vous permet de déterminer vos propres fonctionnalités selon votre imagination et les compétences de programmation. Vous n'êtes pas coincé avec "je peux soit modifier, ou de déclencher un événement de souris avec elle." Vous pouvez faire les deux 🙂
Ajoutez la ligne suivante dans le corps de votre écoute, avec
T
le type de votre enregistrement de la table :Créer votre cellule à l'aide d'une cellule de l'usine et dans la cellule de l'usine qui crée la cellule nœud, à la place d'une souris gestionnaire d'événement ou d'un filtre sur le nœud plutôt que de la tableView.
Dans mon cas, j'utilise code suivant