问题
TableView的setTableMenuButtonVisible提供了一种更改表列可见性的机制.但是,该功能还有很多不足之处:
菜单应保持打开状态.我有15个表格列,单击菜单打开很痛苦 - >单击列 - >单击菜单打开 - >单击下一列 - > ...更改多列的可见性很痛苦
应该选择全部/取消选择所有功能
应该有一种方法来扩展菜单与自定义项目
取消选择所有列后,无法重新选择列,因为标题已消失,并且表格菜单已经消失
换句话说:表菜单的当前实现是相当无用的.
题
有没有人知道如何用适当的方式替换现有的tableview菜单?我见过一个带有".show-hide-columns-button"样式查找并添加事件过滤器的解决方案.然而那是2年前,也许事情发生了变化.
非常感谢你!
这就是我想要的方式,通过ContextMenu演示(即点击桌面上的鼠标右键):
public class TableViewSample extends Application {
private final TableView table = new TableView();
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) {
Scene scene = new Scene(new Group());
stage.setTitle("Table View Sample");
stage.setWidth(300);
stage.setHeight(500);
// create table columns
TableColumn firstNameCol = new TableColumn("First Name");
TableColumn lastNameCol = new TableColumn("Last Name");
TableColumn emailCol = new TableColumn("Email");
table.getColumns().addAll(firstNameCol, …Run Code Online (Sandbox Code Playgroud) 我看到了如何使用代码在许多地方获取表头的示例
TableHeaderRow header = (TableHeaderRow) tableView.lookup("TableHeaderRow");
Run Code Online (Sandbox Code Playgroud)
像这里:如何防止TableView在javaFX 8中执行TableColumn重新排序?
但是这段代码null对我来说很重要.
怎么到达TableHeaderRow呢?