JavaFX 防止 TableMenuButton 隐藏所有列

标签 java menu javafx tableview javafx-8

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

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

最佳答案

绝对是一个错误(您可以考虑在 fx' jira 中报告它)。您在问题中提到的 hack-around 似乎与从 Swing 中借用的一个小技巧一起工作:延迟对 future 可见性的恢复:

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 的执行是在“ future 某个未指定的时间”并且没有说明它与正常(源自 ui)事件的关系。

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

关于JavaFX 防止 TableMenuButton 隐藏所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26141262/

相关文章:

java - 我应该把 jar 文件放在哪里?

java - 使用Spring配置tibco jms

java - MYSQL SELECT ... FOR UPDATE 不起作用?

JavaFX 字体大小从宽度

popup - javafx 事件发生时显示弹出窗口

java - 如何获取 JavaFX 8 中 ScrollPane 内 Label 对象的位置

java - 启动Mule进行远程调试,无需修改wrapper.conf

html - CSS:如何阻止悬停效果推送我的文本?

CSS 媒体查询和纵向模式

android - 选择选项后如何关闭我的 inflater 菜单