gpt4 book ai didi

java - 检测双击 TableView JavaFX 的单元格

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:13:47 26 4
gpt4 key购买 nike

我正在尝试检测对表格 View 的随机单元格的双击。双击的检测不是问题,而是双击了哪个单元格。

table.addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if (event.getClickCount() > 1) {
System.out.println("double clicked!");
TableCell c = (TableCell) event.getSource();
System.out.println("Cell text: " + c.getText());
}
}
});

这就是我构建表格的方式:

private void BuildTable() throws Exception
{
/*Some initialisations etc*/

for(int i=0; i<result.getMetaData().getColumnCount();i++)
{
final int j = i;
TableColumn col = new TableColumn(result.getMetaData().getColumnName(i+1));
col.setCellValueFactory(new Callback<CellDataFeatures<ObservableList,String>,ObservableValue<String>>(){
public ObservableValue<String> call(CellDataFeatures<ObservableList, String> param)
{
return new SimpleStringProperty(param.getValue().get(j).toString());
}
});
table.getColumns().addAll(col);


}
while(result.next()){
ObservableList<String> row = FXCollections.observableArrayList();
for(int i = 1; i<=result.getMetaData().getColumnCount();i++){
row.add(result.getString(i));
}
data.add(row);
}
table.setItems(data);
}catch(Exception e){
e.printStackTrace();
}

}

这里真正的问题是我不能直接转换为 TableCell。有人可以帮我吗?我将不胜感激。

最佳答案

您需要向表格单元格本身注册处理程序,而不是向表格注册处理程序。为此,请在适当的 TableColumn(s) 上使用单元工厂。

例如,将以下代码添加到 standard table example ( list 13.6)。

firstNameCol.setCellFactory(new Callback<TableColumn<Person, String>, TableCell<Person, String>>() {
@Override
public TableCell<Person, String> call(TableColumn<Person, String> col) {
final TableCell<Person, String> cell = new TableCell<Person, String>() {
@Override
public void updateItem(String firstName, boolean empty) {
super.updateItem(firstName, empty);
if (empty) {
setText(null);
} else {
setText(firstName);
}
}
};
cell.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if (event.getClickCount() > 1) {
System.out.println("double click on "+cell.getItem());
}
}
});
return cell ;
}
});

关于java - 检测双击 TableView JavaFX 的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23998082/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com