【问题标题】:JToolBars in JTabbedPanes; incorrect tab name when docked and undockedJTabbedPanes 中的 JToolBars;停靠和取消停靠时选项卡名称不正确
【发布时间】:2012-11-17 16:25:22
【问题描述】:

我对事件侦听和 GUI 还很陌生,所以无法弄清楚这一点。

我有一个 JTabbedPane,我在其中添加了 3 个组件。这些组件是 JToolBars,它允许我将它们从 JTabbedPane 拖到浮动窗口中。这将从选项卡式窗格中删除选项卡。当我将 JToolBar 拖回窗格时,将重新创建该选项卡。 但是,它现在的名称不正确。该名称对应于 ToolBar 停靠在 TabbedPane 的哪一侧;北、南、东或西。

任何人都可以推荐一种检测 JToolBar 已重新停靠然后更新选项卡标题的好方法吗? 到目前为止,我已经在 tabbedPane 上实现了一个更改侦听器,但无法找到合适的事件。

干杯。

已解决: 解决方案是使用 ContainerListener 来检测通过实现的 componentAdded 方法添加的组件。当一个组件被添加到 JTabbedPane 时,我调用了一个方法来使用组件名称更新选项卡名称,通过 .setName() 设置。

public void componentAdded(ContainerEvent added) {
    updateTabs();
}

public void updateTabs() {
    for (int i = 0; i < tabbedPane.getComponents().length; i++) {
        tabbedPane.setTitleAt(i,
                tabbedPane.getComponents()[i].getName());
    }
}

【问题讨论】:

  • 欢迎阅读SSCCE,你的问题应该激励你回答不要无聊。
  • 这里有一个相关的example 让您的sscce 开始。
  • 谢谢大家,抱歉这个问题的质量很差,我现在正处于最后期限,所以有点简洁。我会尽快改进我找到的这个问题和解决方案。
  • 请输入解决方案作为答案,如果有机会,请输入答案accept

标签: java swing jtabbedpane jtoolbar


【解决方案1】:

解决方案是使用 ContainerListener 来检测通过实现的 componentAdded 方法添加的组件。当一个组件被添加到 JTabbedPane 时,我调用了一个方法来使用组件名称更新选项卡名称,通过 .setName() 设置。

public void componentAdded(ContainerEvent added) {
    updateTabs();
}

public void updateTabs() {
    for (int i = 0; i < tabbedPane.getComponents().length; i++) {
        tabbedPane.setTitleAt(i,
                tabbedPane.getComponents()[i].getName());
    }
}

【讨论】:

    猜你喜欢
    • 2018-03-18
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多