JavaFX防止TableMenuButton隐藏所有列

时间:2014-10-01 12:21:28

标签: java menu javafx tableview javafx-8

我想使用表格菜单按钮(table.setTableMenuButtonVisible(true);)来隐藏和显示TableView中的指定列。当我取消选择所有列时,[+]按钮隐藏,“表中没有列”弹出,用户无法显示任何列。

我试图通过监听table.getVisibleLeafColumns()并显示最后隐藏的列来阻止隐藏所有列,但是在菜单按钮的ChoiceBox中,此列未被选中。

1 个答案:

答案 0 :(得分:1)

肯定是一个错误(您可以考虑在fx'jira中报告它)。你在问题中提到的hack-around似乎与Swing借来的一个小技巧有关:延迟了对未来可见性的回归:

ListChangeListener<? super TableColumn> visibleColumnsListener = c -> {
    while (c.next()) {
        // very last remove
        if (c.wasRemoved() && !c.wasReplaced()) {
            TableColumn column = c.getRemoved().get(0);
            // delay reverting visibility
            Platform.runLater(() -> {
                column.setVisible(true);
            });
        }
    }
};

它可能比Swing中的类似物更脏,但是,runnable的执行在“未来某个未指定的时间”并且没有说明它与正常(源自ui)事件的关系。

报告为RT-38907并且刚刚修复(重复:RT-37616),应在一周或两周内在8u40 ea中冒出来。