我有一个由2D可观察列表ObservableList<ObservableList<Item>>
填充的JavaFX TableView。我希望用户能够选择一个项目,然后使用鼠标单击在TableView中设置该项目。
这是我的代码:
@Override
protected void updateItem(Item item, boolean empty) {
super.updateItem(item, empty);
//Various code to set up the custom CellFactory has been removed.
this.setOnMouseClicked((MouseEvent e) -> {
Item newItem = getNewItem();
if (e.getButton() == MouseButton.PRIMARY && newItem != null) {
// Code to set the underlying data item to the new item
}
});
非常感谢任何帮助。
答案 0 :(得分:1)
我假设你有一个
TableView<ObservableList<Item>> table ;
和一堆
TableColumn<ObservableList<Item>, Item> col ;
每个都有一个知道columnIndex
的单元工厂,其值由表示该行的列表的columnIndex
元素给出。
然后你可以做
this.setOnMouseClicked((MouseEvent e) -> {
Item newItem = getNewItem();
if (e.getButton() == MouseButton.PRIMARY && newItem != null) {
// Code to set the underlying data item to the new item
ObservableList<Item> row = (ObservableList<Item>) getTableRow().getItem();
row.set(columnIndex, newItem);
}
});