Détecter de double-cliquer sur la ligne de TableView JavaFX
J'ai besoin de détecter un double-clic sur une ligne de TableView
.
Comment puis-je écouter un double-clic sur n'importe quelle partie de la ligne et d'obtenir toutes les données de cette ligne à imprimer à la console?
- Les solutions à l'aide de double-cliquer sur cellules de travail, parce que vous pouvez toujours appeler
getTableRow().getItem()
sur une cellule pour obtenir l'élément de la ligne. Mieux, c'est juste pour enregistrer un écouteur avec la ligne de la table directement (voir la réponse).
Vous devez vous connecter pour publier un commentaire.
Ici est un exemple de travail:
PropertyValueFactory
pour chaque champ, comment puis-je prolonger votre méthode pour écouter un double-clic? Aussi, je ne comprends pas cette partie de votre ligne d'usine: vous créez un nouveauTableRow
, appelgetItem
sur elle, puis imprimer ce nom de l'élément? Quand les données réelles de s'impliquer?PropertyValueFactory
est utilisé pour uncellValueFactory
, pas uncellFactory
. Vous avez toujours besoin d'uncellValueFactory
sur votreTableColumn
s (note à la fois les colonnes de la table ont égalementcellValueFactory
s définir sur eux). Vous pouvez en outre définir lescellFactory
s sur certaines ou toutes les colonnes si vous avez besoin d'eux; ils sont indépendants de cette. Pas sûr de comprendre votre dernière question; le code que vous faites allusion est le gestionnaire de la souris. Ainsi, lorsque la souris est double-cliqué sur la ligne, le gestionnaire récupère la valeur de la ligne et affiche son nom.ValueFactory
etCellFactory
, merci. Pour ma deuxième question, j'ai raté de peu le contexte, je comprends maintenant.Exemple:
Si vous êtes à l'aide personnalisée de sélection de modèle, alors vous pouvez obtenir la rangée d'événement, par exemple:
event.getButton().equals(MouseButton.PRIMARY)
au lieu deevent.isPrimaryButtonDown()
pour obtenir mine de travailler.Cela fonctionne pour moi:
Si vous utilisez
SceneBuilder
vous pouvez définir votre tableOnMouseClicked
àhandleRowSelect()
méthode comme indiqué ci-dessous:Cette réponse a été testé:
table.getSelectionModel().getSelectedItem()
peut être utilisé depuis nous attraper un double-clic. Un premier clic, la sélection se déplace, sur le second, ce gestionnaire est exécutée.J'avais situation similaire, ne pas détecter la souris double-cliquez sur l'événement sur la TableView.
Au-dessus de tous les échantillons a parfaitement fonctionné. mais ma demande n'a pas de détecter double-cliquez sur l'événement à tous.
Mais j'ai trouvé que si TableView est modifiable, de la souris double-cliquez sur l'événement ne peut pas être détecté !!
de contrôler votre demande si TableView est modifiable comme ça.
si ensuite, double-cliquez sur l'événement ne fait qu'augmenter sur la même ligne sélectionnée.