javafx tableview comment obtenir la ligne, j'ai cliqué?
voici mon code
//this event is attached to TableCell
public EventHandler dblclickDescription = new EventHandler<MouseEvent>(){
@Override
public void handle(MouseEvent event) {
if(event.getButton().equals(MouseButton.PRIMARY)){
if(event.getClickCount() == 2){
printRow(event.getTarget());
}
}
event.consume();
}
};
//print row
public void printRow(Object o){
Text text = (Text) o;
//??? don't know what to write here
System.out.println(row.toString());
}
1) comment puis-je obtenir à partir de la cellule, j'ai cliqué pour la ligne?
2) puis-je joindre à l'événement pour l'ensemble de la ligne au lieu de chaque colonne?
EDIT:
3) j'ai pensé que j'ai attaché l'événement sur TableCell
TableCell cell = TableColumn.DEFAULT_CELL_FACTORY.call(p);
cell.setOnMouseClicked(dblclickDescription);
mais quand je l'ai testé,
event.getSource();//is a TableColumn
event.getTarget();//is a Text if clicked on text
event.getTarget();//is a TableColumn if clicked on empty space, even if that cell has text
est-il un moyen d'obtenir TableCell
de MouseEvent
?
OriginalL'auteur user2760830 | 2015-05-12
Vous devez vous connecter pour publier un commentaire.
Pour répondre à vos questions:
TableCell
définit ungetTableRow()
méthode, en retournant leTableRow
. Ainsi, vous pouvez fairequi vous donnera la ligne de l'élément de la table (c'est à dire le bon élément de
table.getItems()
). Vous pouvez également obtenir ce à partir detable.getItems().get(cell.getIndex())
si vous préférez.Oui. Définir un
rowFactory
:OriginalL'auteur James_D
Pour obtenir le retour à l'index de la ligne ou de l'élément sélectionné, utilisez ce code :
Vous pouvez ensuite ajouter un écouteur lorsque l'index ou la modification de l'objet comme ceci :
En outre, si l'utilisateur clique sur une cellule dans une ligne, puis double clique sur une autre cellule de la même ligne, le changement de l'auditeur ne sera pas déclenché...
OriginalL'auteur Thomas