java - 如何将点击事件添加到 javafx 中的 tableview 单元格

标签 java user-interface javafx tableview scenebuilder

<分区>

我的目标是检测用户何时双击 TableView 中的单元格并使用来自该单元格的信息。从我的照片中你可以看到我将有一张 table ,上面有啤酒、啤酒厂和风格。

双击一个单元格后,我想向用户显示一张包含一些信息的图像(啤酒、啤酒厂)。我也在使用场景生成器,所以我正在处理 Controller 类。到目前为止,我所拥有的是这个,但没有运气。没有错误,只是在我尝试基本测试时没有提取信息。

仅供引用:我想检测对一个单元格的点击,并且只从点击的单元格中提取信息 - 而不是整行。

screenshot of table with beers and breweries

这是我的 Activity 代码。

public void clickItem(MouseEvent event) {
    tableID.setOnMouseClicked(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent event) {
            System.out.println("Clicked on " + (tableID.getSelectionModel().getSelectedCells().get(0)).getColumn());        
        }
    });
}

最佳答案

如果您正在使用场景生成器和 Controller 类,那么为什么要在该方法上使用 setOnMouseClicked?而不是尝试这个:

@FXML
public void clickItem(MouseEvent event)
{
    if (event.getClickCount() == 2) //Checking double click
    {
        System.out.println(tableID.getSelectionModel().getSelectedItem().getBeer());
        System.out.println(tableID.getSelectionModel().getSelectedItem().getBrewery());
        System.out.println(tableID.getSelectionModel().getSelectedItem().getCountry());
    }
}

要实现这一点,您需要存储所有表格数据。从您的 Controller 类最初为每个单元格的数据创建一个对象。首先将这一行写在你的 Controller 类的顶部:

ObservableList<TableData> data = FXCollections.observableArrayList();

然后使用循环添加所有表格数据。这是一个存储一个数据的例子:

data.add(new TableData("Beer","Brewery","Country"));

这是 TableData 类:

public class TableData
{
    String beer;
    String brewery;
    String country;

    public TableData(String beer, String brewery, String country)
    {
        super();
        this.beer = beer;
        this.brewery = brewery;
        this.country = country;
    }

    public String getBeer()
    {
        return beer;
    }
    public String getBrewery()
    {
        return brewery;
    }
    public String getCountry()
    {
        return country;
    }

}

关于java - 如何将点击事件添加到 javafx 中的 tableview 单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36950130/

相关文章:

java - 同步块(synchronized block)不阻塞对象

java - 更改 spring batch 中的默认数据源

Java:类中的所有内容都是静态的——这合理吗?

c# - 如何将非 bool 属性绑定(bind)到 bool 属性

java - 在后台更新 JavaFX 窗口

java - jaxb编码 self 关系

c++ - 不允许指向不完整类类型的指针。(与相互引用的类结合使用。)

python - Python unittest 可以自动重新尝试失败的测试用例/套件吗?

JavaFX CSS 在运行时更改自定义样式类的属性

JavaFX类 Controller 场景引用