JTabbedPane Tab 组件的 MouseEvents 没有渗透

2023-11-30

我有一个JTabbedPane使用自定义选项卡组件。该组件包含一个JLabel(显示选项卡标题)和JButton(关闭按钮)。当我更改文本中的文本时JLabel the JLabel停止接收鼠标事件,当我直接单击标签时,我无法再选择该选项卡,而是如果我在标签周围单击,则可以选择该选项卡。有任何想法吗?

代码片段:

class ShellPanelTabComponent extends JPanel implements ActionListener{

    private ShellPanel panel;
    private JLabel label;

    public ShellPanelTabComponent(final ShellPanel panel){
      super(new FlowLayout(FlowLayout.LEFT, 0, 0));
      this.panel = panel;
      setOpaque(false);

      label = new JLabel(panel.getTitle());
      label.setFocusable(false);
      add(label);
      label.setBorder(BorderFactory.createEmptyBorder(2,0,0,5));

      //now the button
      CloseButton closeButton = new CloseButton(panel);
      add(closeButton);
      closeButton.addActionListener(this);
    }

    public void actionPerformed(ActionEvent ae) {
      panel.getShell().removeShellPanel(panel);
    }

    /**
     * @return the label
     */
    public JLabel getLabel() {
      return label;
    }
  }

我不记得在中看到过这样的问题TabComponentsDemo,讨论于如何使用选项卡式窗格。您可以将您的代码与该示例进行比较作为参考。

附录:重构ButtonTabComponent包括getLabel(),这个版本的runTest() in TabComponentsDemo添加一个显示所需行为的按钮。特别是,每次按下按钮时,选项卡都会重新绘制以显示放大的标题。

更新:修改正确的选项卡组件后pane.remove().

public void runTest() {
    pane.removeAll();
    for (int i = 0; i < tabNumber; i++) {
        final int titleIndex = i;
        String title = "Tab " + titleIndex;
        final JButton button = new JButton("Relabel tab");
        button.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                int index = pane.indexOfComponent(button);
                ButtonTabComponent btc = (ButtonTabComponent)
                    pane.getTabComponentAt(index);
                JLabel label = btc.getLabel();
                pane.setTitleAt(index, label.getText() + titleIndex);
                label.invalidate();
                pane.repaint();
            }
        });
        pane.add(title, button);
        initTabComponent(i);
    }
    tabComponentsItem.setSelected(true);
    pane.setTabLayoutPolicy(JTabbedPane.WRAP_TAB_LAYOUT);
    scrollLayoutItem.setSelected(false);
    this.setPreferredSize(new Dimension(500, 200));
    this.pack();
    this.setLocationRelativeTo(null);
    this.setVisible(true);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JTabbedPane Tab 组件的 MouseEvents 没有渗透 的相关文章

随机推荐

  • POST json 字典

    我正在尝试以下操作 内部带有字典的模型在第一个ajax请求上发送它 然后将结果再次序列化并将其发送回控制器 这应该测试我是否可以在模型中取回字典 这不起作用 这是我的简单测试 public class HomeController Cont
  • 从字符串中删除空格 - 使用指针就地 C 风格

    所以 这是一个非常简单的问题 我知道解决方案是一个简单的函数 如下所示 void removeSpaces char s char source s char dest s while source if source source els
  • 如何填充投影图像的空白部分?

    当我在 2D 平面上投影 3D 模型 透视投影 时 投影结果如下图所示 我需要填充这张图片中的空白点 使其看起来像这样 我想知道我能找到一种好方法 使用任何使用 matlab 的图像处理算法 以专业的方式来填补这些点 Code in 数学
  • C# 用时区解析日期时间

    我们如何解析日期时间和时区
  • Wix工具集许可协议多语言问题

    我创建了具有多种语言的 license rtf 文件 当我尝试构建我的 wix 项目时 它向我显示以下错误 提供的字符串中包含指定数据库代码页 1252 中不可用的字符 将这些字符更改为数据库代码页中存在的字符 或者通过修改以下属性之一来更
  • 正确的方法是什么? CSS 链接伪类

    我刚刚发现这个 Note a hover 必须位于 CSS 中的 a link 和 a visited 之后 定义才能有效 Note a active 必须按顺序出现在 CSS 定义中的 a hover 之后 要有效果 Note 伪类名称不
  • 如何在Python中将二进制图像的内容/对象居中?

    我有一个计算图形方向的代码 然后根据这个方向旋转图形 直到它变直 这一切都很好 我正在努力解决的问题是将旋转图形的中心移至整个图像的中心 所以图形的中心点应该与整个图像的中心点相匹配 Input image code import cv2
  • 根据另一个数组键值对数组进行排序

    任何人都可以向我展示如何根据每个数组的依赖键对该数组进行排序的示例 我希望数组按照依赖关系的顺序排列 所以首先是 jquery 然后是 cookie bootstrap checkbox admin 我看过其他帖子 但它们对我来说没有意义
  • 用于检查字节数组是否为零的 SSE 指令 C#

    假设我有一个byte 并想检查所有字节是否为零 For 循环是一种显而易见的方法 而 LINQAll 这是一种奇特的方法 但最高性能至关重要 我该如何使用单SIMD加快检查字节数组是否充满零 我正在寻找最前沿的方法 而不仅仅是正确的解决方案
  • Python_RAKE中的关键字提取

    我是一名新手用户 对以下简单的 循环 问题感到困惑 我有一个本地目录 其中包含 x 个文件 大约 500 个 txt 文件 我想使用 RAKE for Python 从每个唯一文件中提取相应的关键字 我已经查看了 RAKE 的文档 但是 本
  • facebook开放图对象可以动态创建吗?

    我正在开发一个 Facebook 应用程序 我在开放图中创建了一个自定义对象 下面列出了我的一些担忧 特定对象类型下的每个对象实例是否都需要唯一的网页 我正在使用 JS SDK 发布打开图操作 是否有任何规则可以在 js 函数中使用对象 u
  • 如何将数据从 csv::StringRecord 推送到结构中的每个列向量?

    如何实施push self row csv StringRecord 下面的特质 输入是对a的引用csv StringRecord来自rust csv图书馆 这个想法是将每一列附加到其向量中 extern crate csv derive
  • 泛型方法有界类型参数和类型擦除

    通用方法如下 static
  • C++ 中的binary_search 意外行为

    下面的代码片段返回了 0 我期望它是 1 这里出了什么问题 include
  • 相当于Python中Ruby中的findall()方法吗?

    我需要从列表中的模糊列表中提取所有 MP3 标题 对于Python来说 这对我来说很好用 import re for i in re compile mmc mp3 findall open tracklist txt read print
  • iOS 动画贝塞尔/正弦曲线

    我正在寻找在 iOS 中循环播放单线贝塞尔曲线的动画 我脑海中的想法类似于 Siri 之前的 iPhone 4 上的语音控制屏幕 曲线不需要对任何东西做出反应 即 音频 麦克风等 只需从屏幕左循环到屏幕右 并改变曲线的幅度即可 我尝试了几次
  • iOS 证书过期

    我有一个应用程序的配置文件已过期 它似乎仍然在应用程序商店中 因此我假设您只需在下次更新时更新配置文件 这是正确的吗 我遇到的唯一问题是该应用程序使用推送通知 并且它们似乎已停止工作 当配置文件过期时 推送通知也会停止工作吗 我每年会更新什
  • 无需特定应用即可读取 NFC 标签?

    我想知道是否有任何方法可以将一串文本 URL 保存到 NFC 标签 例如 MIFARE 或 NTAG203 该标签可以被其他设备 智能手机 读取 而不需要任何特殊的标签读取应用程序 我测试了几个应用程序 例如Android 触发器 并注意到
  • 使用 HttpClient 通过 AttributeRouting 在 URL 中发送日期

    我在获取 WebAPI 接受的日期范围查询时遇到一些问题 据我所知 从我读过的所有内容来看 这应该有效 但我仍然得到400 Bad Request回应 我的 API 路线如下所示 System Web Http HttpGet GET ra
  • JTabbedPane Tab 组件的 MouseEvents 没有渗透

    我有一个JTabbedPane使用自定义选项卡组件 该组件包含一个JLabel 显示选项卡标题 和JButton 关闭按钮 当我更改文本中的文本时JLabel the JLabel停止接收鼠标事件 当我直接单击标签时 我无法再选择该选项卡