1
我想在listView的行上使用上下文菜单项。在listView的MOUSE_CLICKED事件的事件处理函数中,getSelectionModel()。getSelectedItem()返回选定的项目,那好。但是,当我处理contextMenuItem的onAction事件时,它将返回null。但是,以图形方式选择该项目。 有没有办法在第一个事件处理后“保留”选择?JavaFX ListView&ContextMenu - getSelectedItem()返回null
这里是代码的相关部分:
ListView<Text> nameList = new ListView<>();
final ContextMenu cCm = new ContextMenu();
MenuItem cItem = new MenuItem("someText");
cCm.getItems().add(cItem);
...
nameList.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent e) {
if (e.getButton() == MouseButton.SECONDARY) {
//its OK here:
System.out.println(nameList.getSelectionModel().getSelectedItem().getText());
cCm.show(nameList, e.getScreenX(), e.getScreenY());
}
}
});
cItem.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
final Stage dialog = new Stage();
dialog.initModality(Modality.WINDOW_MODAL);
//nullPointerException on the following:
Text t = new Text(nameList.getSelectionModel().getSelectedItem().getText());
//showing dialog, etc.
随意标记我的答案是正确的。 –