0
我有以下控制器在我的gui上多次实例化。原因是它有一个tableview被填充不同类型的数据。看起来像这样动态添加上下文菜单项到tableview列
class Controller {
@FXML
TableView<Map<String, String> myTable;
private Manager manager;
//Each TableView has different ammount of columns with different names that get dynamically added to the table view using this function
public void setUpColumns(List<TableColumn<Map<String, String>, String>> columns){
myTable.getColumns().addAll(columns);
addContextMenuToColumnHeaders();
}
private addContextMenuToColumnHeaders(){
for (TableColumn<Map<String, String>, ?> tc : myTable.getColumns()){
ContextMenu addToGraphContextMenu = createAddToGraphContextMenu(tc);
tc.setContextMenu(addToGraphContextMenu);
}
}
private ContextMenu createAddToGraphContextMenu(TableColumn<Map<String, String> String> tc){
for (MangerHandledObject mHO : manager.getHandledObjects()){
MenuItem menuItem = new MenuItem(mHO.getName());
menuItem.setOnAction(new EventHandler<ActionEvent>(){
@Override
public void handle(ActionEvent event){
//I want each menu item to have access to the column that is added to get the name of the column. Even after dynamically adding new menuItems
manager.callMethod(tc.getName());
}
});
}
}
}
经理处理的对象不是静态的。所以这些都是经理保存的列表中添加和删除的。我想这
contextMenu.setOnShowing(......)
,并显示它总是从经理检查列表和之前重新使上下文菜单项。但问题是,执行此操作时,我无法再访问这些列。有什么办法可以绕过这个吗?我是否应该实现自己的上下文菜单以获得列名称的字段?