Ich schreibe eine Anwendung von Swing nach javafx um.Rechtsklick Event und Doppelklick Event auf Tabellenansicht javafx
Ich verstehe nicht, wie ein Doppelklick-Ereignis und ein Rechtsklick-Ereignis in derselben Zeile einer Tabellenansicht implementiert werden. Separat funktionieren sie ok.
Thi ist mein Code für Rechtsklickverhalten.
words_table.setRowFactory(
new Callback<TableView<WordsToFind>, TableRow<WordsToFind>>() {
@Override
public TableRow<WordsToFind> call(TableView<WordsToFind> tableView) {
final TableRow<WordsToFind> row = new TableRow<>();
final ContextMenu rowMenu = new ContextMenu();
MenuItem removeItem = new MenuItem("Delete");
removeItem.setOnAction(e -> {
int wordid = words_table.getSelectionModel().getSelectedItem().getWordToFindId();
deleteWord(wordid);
words_table.getItems().remove(row.getItem());
});
rowMenu.getItems().addAll(removeItem);
row.contextMenuProperty().bind(
Bindings.when(Bindings.isNotNull(row.itemProperty()))
.then(rowMenu)
.otherwise((ContextMenu)null));
return row;
}
});
Dies ist mein Code für Doppelklickverhalten
words_table.setRowFactory(
new Callback<TableView<WordsToFind>, TableRow<WordsToFind>>() {
@Override
public TableRow<WordsToFind> call(TableView<WordsToFind> tableView) {
final TableRow<WordsToFind> row = new TableRow<>();
row.setOnMouseClicked(new EventHandler<MouseEvent>(){
@Override
public void handle(MouseEvent event){
if (event.getClickCount() == 2 && (! row.isEmpty())) {
some code here .....
}
}
});
return row;
}
});
Dank Alb
einfach den 'row.setOnMouseClicked' Anruf setzen in der Methode 'call()' der Factory der ersten Zeile. –
Kein Glück James, ich habe beide Lösungen ausprobiert, deine und Oswalds, beide kompilieren aber nur den Doppelklick; wenn ich den rechten klick drücke, nichts hannens. – gocan76
Dann tun Sie etwas anderes falsch in einem anderen Teil Ihres Codes. Sie sollten ein [MCVE] von Grund auf neu erstellen, das das Problem veranschaulicht. –