JavaFX - 动态关闭 TabPane 中的选项卡

2024-01-26

我有一个带有可关闭选项卡的 TabPane。当用户单击选项卡内容中的按钮时,我想触发“关闭选项卡事件”。这是用户单击按钮时调用的方法:

public class CustomTab extends Tab {

    ...

    protected void close() {
        Event.fireEvent(this, new Event(Tab.CLOSED_EVENT));
    }

    ....
}

我将此自定义选项卡添加到 tabpane 中:

TabPane tabPane = new TabPane();
...
CustomTab tab = new CustomTab();
tab.setOnClosed(new EventHandler<Event>() {
    @Override
    public void handle(Event t) {
        System.out.println("Closed!");
    }
});
tabPane.getTabs().add(tab);
tabPane.getSelectionModel().select(tab);

通常,可以通过单击选项卡标题中的(默认)关闭图标和“关闭!”来关闭选项卡。被打印到屏幕上。但是,当用户单击按钮(位于选项卡内容中)并调用close()的方法CustomTab再次“关门了!”打印到屏幕上,但这次选项卡没有关闭。是不是很奇怪?

如何在单击任意按钮时关闭选项卡?

P.S.: tabPane.getTabs().remove(tab) 可以工作,但是触发相应的事件要优雅得多。它还应该关闭该选项卡。


该方法仅使用tabPane.getTabs().remove(tab)并不完全正确,因为如果解决了它不会调用“onClose”处理程序。 我正在使用以下方法:

private void closeTab(Tab tab) {
        EventHandler<Event> handler = tab.getOnClosed();
        if (null != handler) {
            handler.handle(null);
        } else {
            tab.getTabPane().getTabs().remove(tab);
        }
    }

如果未设置处理程序或调用“onClosed”处理程序,则会删除选项卡。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaFX - 动态关闭 TabPane 中的选项卡 的相关文章

  • Java Fx 将场景大小调整为舞台

    我进行了搜索 但找不到任何与我在 Fx 中遇到的问题相近的内容 我正在使用 Java Fx JDK 8 并且在调整场景大小时遇到 问题 下面的代码在场景图中一次仅加载一个屏幕 并在屏幕之间切换 问题是当我调整舞台大小时 场景没有随舞台调整大
  • 无法在 JavaFX TableView 单元格值上显示工具提示

    In my JavaFX TableView我有一个TableColumn我已将 Cell Factory 设置为渲染ProgressBar以及对于其他TableColumns 我已将 Cell Factory 设置为显示ToolTip 就
  • 使用转换后的边界进行布局

    我已经缩放了窗格中的一个节点 但窗格的布局考虑了边界 没有任何转换 我希望它考虑到转换后的边界 例如 和代码 import javafx application Application import javafx geometry Pos
  • 限制 JavaFX TextField 的字符数会导致撤消时 IndexOutOfBounds

    我需要限制用户可以输入的字符数TextFieldJavaFX 控件 我已经延长了TextField like so public class LengthLimitedTextField extends TextField param ma
  • 如何在单击按钮时从 JavaFX WebView 调用 JavaScript 函数?

    我正在尝试从 JavaFX 调用 JavaScript 函数WebView http docs oracle com javafx 2 api javafx scene web WebView html在 JavaFX 按钮单击事件上 我正
  • 如何让JNLP下载正确版本的JavaFX 2?

    JavaFX 2 高度依赖本机代码 对于我的桌面应用程序 我想为每个受支持的操作系统选择最匹配的 JavaFX 风格 以使目标系统上的安装尽可能轻松 由于 JavaFX 2 附带了几个 Ant 任务来帮助部署 我认为这是可行的方法 但我似乎
  • Javafx 删除应用程序启动时的快速白屏

    使用 javafx 7 更新 60 操作系统 Windows 7 我刚刚从那里获取了 helloworldhttp docs oracle com javafx 2 get started hello world htm http docs
  • 窗格形状修改

    好吧 长话短说 我正在尝试创建一种聊天 消息系统 并且需要一点帮助 我正在尝试在容器上创建一个箭头 如下图所示 该图像是从 ControlsFX 及其 PopOver 窗口中取出的 我不能使用他们的弹出窗口小部件 因为它的行为与我使用它的目
  • JavaFX 2 自动列宽

    我有一个 JavaFX 2 表 显示人们的联系方式 假设有三列 名字 姓氏和电子邮件地址 当我的应用程序启动时 它会在表中填充有关系统中已有人员的几行数据 问题是列宽都是相同的 大多数时候 名字和姓氏会完整显示 但电子邮件地址会被剪掉 用户
  • JavaFX XYChart 对数图

    我有一个 XYChart 将数据绘制为 Y 轴上的线性步骤 我想绘制为对数或半对数 Y 刻度 如何更改我的以下代码 public class BaseXYChart extends Application Override public v
  • C# Winforms 透明控件允许点击

    我有一个问题 与以下内容有点相关 C Winforms 透明控件允许点击 https stackoverflow com questions 855826 c winforms transparent control allowing cl
  • Javascript 单击和 mousedown 冲突

    我有一个正在使用的特定场景click插入一个div 然后mousedown在该 div 上拖动它 我已经绑定了click到父容器 并且mousedown在 div 本身上 但当我mousedown在 div 上 它也会触发对父级的单击 因此
  • 如何在 Eclipse 中使用 JavaFX 2 SDK?

    我已经安装了 JavaFX 2 0 SDK 现在我想使用 Eclipse 制作一个 JavaFX 应用程序 但我该如何使用javafx Eclipse 中的类 The 官方 JavaFX Eclipse 插件 http docs oracl
  • 鼠标悬停控件并显示其手柄

    我知道 我可以编写一个函数作为表单中每个组件的事件来执行某些操作 例如 当鼠标悬停时 是否也可以在不将事件链接到特定组件的情况下调用事件函数 而是为应用程序中的所有组件调用事件函数 我想要实现的是显示例如只需将鼠标悬停在任何组件上即可获取句
  • WPF FrameworkElement 未接收鼠标输入

    尝试让 OnMouse 事件出现在子项中FrameworkElement 父元素是一个Panel 以及Background属性不为空 class MyFrameworkElement FrameworkElement protected o
  • 如何在JavaFX中使用Node类的intersect()方法?

    JavaFX Node 类提供了两种相交方法 intersects Bounds localBounds and intersects double localX double localY double localWidth double
  • 从 Java 监听系统鼠标点击

    我的主要目的是计算特定应用程序上的鼠标点击次数 想象一下 我在 PC 上打开了 Microsoft Word 和 Web 浏览器 我的 Java 代码应该告诉我单击 Word 和 Web 浏览器的次数 我需要应用程序名称和点击次数 我怎样才
  • 使用 PyQt4 在 QWidget 上进行 eventFilter

    我有一个 QMainWindow 其中包含DrawingPointsWidget 该小部件随机绘制红点 我通过使用以下命令为 MouseHovering 事件安装事件过滤器 在 QMainWindow 的状态栏中显示鼠标坐标self ins
  • JavaFX 全屏 - 根据屏幕尺寸调整元素大小

    有没有什么方法可以使全屏 如果可能的话也调整大小 而不是重新排列所有内容 实际上它所做的是重新排列元素 例如调整大小但调整到整个屏幕 以形成实际的全屏模式 就像通常改变屏幕分辨率的游戏一样 以便按钮和文本根据屏幕 窗口的大小相应增长 另外
  • javafx中的stackpane和root有什么区别?

    我正在练习javafx做饼图 以下是开发饼图的代码 如果我这样做Group并与StackPane 我发现输出没有区别 我已经评论了组部分 只是徘徊两者之间的区别 import javafx application Application i

随机推荐