在鼠标单击上设置JavaFX TableView项

时间:2014-12-15 23:37:22

标签: javafx mouseevent tableview

我有一个由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
        }
    });

非常感谢任何帮助。

1 个答案:

答案 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);
    }
});