我使用ObservableMap而不是ObservableList创建了一个表。你可以看到代码(不是我写的)here。现在我需要为每一行添加上下文菜单。所以我编写了如下代码:
public MapTableView<String, LineItem> initialize(MapTableView<String, LineItem> tableView) {
tableView.setRowFactory((TableView<Entry<String, LineItem>> tableView1) -> {
final TableRow<Entry<String, LineItem>> row = new TableRow<>();
final ContextMenu contextMenu = new ContextMenu();
final MenuItem cancelMenuItem = new MenuItem("Cancel");
cancelMenuItem.setOnAction((ActionEvent event) -> {
LineItem item = tableView1.getSelectionModel().getSelectedItem().getValue();
System.out.println(item.getLineNo()); // gives me null
});
});
contextMenu.getItems().add(cancelMenuItem);
// Set context menu on row, but use a binding to make it only show for non-empty rows:
row.contextMenuProperty().bind(Bindings.when(row.emptyProperty()).then((ContextMenu) null)
.otherwise(contextMenu)
); tableView1.setContextMenu(contextMenu);
return row;
});
return tableView;
}
实际上它是从表中检索订单但是当我访问对象的变量时它会给我&#34; null&#34;。我无法找出我在做什么错。请帮我解决一下这个。更多 - 我正在使用以下内容初始化表:
tableView.setEditable(false);
tableView.setColumnResizePolicy(TableView.UNCONSTRAINED_RESIZE_POLICY);
我是否应该使用以下任何内容:
tableView.getSelectionModel().setCellSelectionEnabled(true);
一切正常,但是当我试图访问&#34;项目&#34;的变量时我正在获得&#34; Null Pointer Exception&#34;因为值为null,但该对象不为null。提前谢谢。
答案 0 :(得分:0)
正如@James_D所说,使用
LineItem item = row.getItem().getValue()
解决了这个问题。