查找已调用弹出菜单的 JTable 行

2023-11-25

我有一个 JTable 和一个特定于每一行的弹出菜单。我想计算用户右键单击鼠标(Windows L&F)以调出弹出菜单的行。

我为表创建了一个 MouseListener,因此它可以在单击时获取 MouseEvent,并在正确的位置显示弹出菜单。但是,当用户从弹出菜单中选择一个项目时,我无法找到一种方法来确定用户首先右键单击的行。弹出菜单调用的事件不再具有右键单击发生的 x,y 坐标。

我已经考虑过获取弹出窗口的位置,但它属于框架,而不是表格,因此它或其父级都没有我想要的正确的 x,y 值。

我通过子类化 JPopupMenu 并设置我希望它在 MouseListener 中具有的 x 和 y 值来解决这个问题。但在我看来,这对于任何想要在 JTable 上放置弹出菜单的人来说都是一个普遍问题,我想知道我错过了什么。

有没有一种更简单的方法来做到这一点,尤其是不涉及子类化 JPopupMenu 的方法?


JTable.rowAtPoint(...);

您可以从 MouseEvent 获取点。

Edit:

table.addMouseListener( new MouseAdapter()
{
    public void mouseReleased(MouseEvent e)
    {
        if (e.isPopupTrigger())
        {
            JTable source = (JTable)e.getSource();
            int row = source.rowAtPoint( e.getPoint() );
            int column = source.columnAtPoint( e.getPoint() );

            if (! source.isRowSelected(row))
                source.changeSelection(row, column, false, false);

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

查找已调用弹出菜单的 JTable 行 的相关文章

随机推荐

  • 向 Python 脚本发送消息

    我正在尝试编写一个小 python 程序来关闭或重新启动我的 Raspberry PI 由连接到 GPIO 的按钮驱动 该程序可以通过两个 LED 显示树莓派的当前状态 启动 运行 停止 重启 python 程序作为守护进程执行 由 ini
  • C 中的非 void 函数不返回任何内容

    以下代码片段中的最佳实践是什么 int foo struct data bar struct info bla if bar bla gt status 0 return 事实上 它工作得很好 但我感觉不舒服gcc给我一个警告 这是实际的代
  • 如何使用 UIApplicationDelegateAdaptor 作为 ObservableObject?

    在我的 iOS 14 中App 我可以登记遗产AppDelegate通过做这个 main struct MyApp App if os iOS UIApplicationDelegateAdaptor AppDelegate self va
  • Python如何从文件中读取原始二进制文件? (音频/视频/文字)

    我想读取文件的原始二进制文件并将其放入字符串中 目前 我正在打开一个带有 rb 标志的文件并打印字节 但它显示为 ASCII 字符 对于文本 即视频和音频文件 它给出符号和乱码 如果可能的话 我想得到原始的 0 和 1 这也需要适用于音频和
  • Delphi函数像Windows一样显示字节数

    这是一个简单的问题 我认为 是否有一个系统内置函数 或者某人创建的可以从 Delphi 调用的函数 它将显示多个字节 例如文件大小 就像 Windows 在文件属性框中显示的方式一样 例如这是 Windows 属性框显示各种尺寸的方式 53
  • .Net 数组的 LongLength 的目的是什么?

    Net 中数组的 LongLength 属性的用途是什么 使用标准整数作为长度 最多可以容纳 20 亿个索引 真的有人使用 Net 来维护包含超过 20 亿个元素的单个数组吗 即使每个元素都是一个字节 那仍然是 2 GB 的数据 在 Net
  • 错误:加载块 0 失败。 - webpack 尝试加载 0.js

    我有以下项目结构 mainFile js scripts Library1 js Library2 js 库文件使用requirejsdefine function syntax 因此 我将其放入 webpack config js 中 m
  • 如何从 json 创建表列和字段? (动态网格)

    我有一个 json 文件 我假设我对内容一无所知 我不知道型号 然而 json 文件中给出了模型 数据和有关网格的其他信息 我将如何以这种方式创建列等 Stackoverflow 上充斥着与此非常相似的问题 我研究了所有这些 但没有找到明确
  • java7 / Rhino 中编译和解释的 javascript 的性能

    我对 Java7 中的 Rhino javascript 引擎的性能有一个问题 很快 我的脚本 解析和编译文本 在 Chrome 中的运行速度比 Java7 Rhino 脚本引擎中的运行速度大约快 50 100 倍 我试图找到改善这种情况的
  • Spring Security:抛出 LockedException 而不是 BadCredentialsException,为什么?

    使用 Spring Security 4 0 2 RELEASE 对于使用 spring security 框架的基本用户身份验证 我实现了 spring securityDaoAuthenticationProvider 当用户尝试使用正
  • 通过进度条显示执行进度

    我有一个愚蠢的问题 但我被困住了 我正在从我的代码中执行存储过程 过程需要时间 因此我显示一个进度条 它显示执行的进度 但是存储过程执行并且没有任何内容可以增加进度条的值 这是我的代码 void btnYes Click object se
  • 如何使用 ReSharper 创建 NUnit 测试?

    我正在尝试使用 C 进行单元测试 很多人告诉我使用 NUnit 因为它比 MSTest 更好 显然 我不知道 而且它在我正在使用的 ReSharper 中也有很好的支持 现在我以前从未编写过单元测试 请耐心等待 我是一名大学生 ReShar
  • 无法在“ServiceWorker”上执行“postMessage”:无法克隆函数

    我正在尝试向服务工作者实例发布消息 我收到以下错误 无法在 ServiceWorker 上执行 postMessage function obj removeListener ev fn 无法克隆 我的代码如下 var socket io
  • GKE Nginx Ingress Controller 前面的全局负载均衡器(HTTPS 负载均衡器)

    我有一个 GKE 集群 它使用 Nginx Ingress Controller 作为其入口引擎 目前 当我设置 Nginx Ingress Controller 时 我定义了一个服务kind LoadBalancer并将其指向先前在 GC
  • 对 RGB 图像使用特征数组数组

    我正在尝试使用 Eigen 库进行一些简单的图像处理 我将使用 Array3f 作为 RGB 三元组 并使用 Array 来保存 RGB 图像 这似乎部分有效 我可以方便地对图像进行组件式加法 乘法和除法 但某些操作 特别是涉及减法或求反
  • 是否可以为 python 创建嵌套虚拟环境?

    在处理一些自动化脚本时 我发现需要有一些可用于所有脚本的通用包 例如ipython and spyder 并仅安装每个脚本的差异包 我们称之为差异包 有没有办法在Python中嵌套虚拟环境 也就是说 通过某种方式设置环境 以便 python
  • 如何在C++中使用clock()

    我怎么打电话clock in C 例如 我想测试线性搜索在数组中查找给定元素需要多长时间 include
  • Typescript 将所有日期从接口转换为字符串

    是否可以全部改造Date类型定义从我的接口到string 因为它会自动转换为string关于 JSON 字符串化 interface Item key string value number created Date const item
  • 如何上传JAR到Nexus OSS 3?

    如何通过以下方式执行 jar 的上传curlNexus 3 我尝试使用链接提示但没有成功 这是我的尝试 curl v F r F releases hasPom true and F jar F file v12 1 0 1 pom xml
  • 查找已调用弹出菜单的 JTable 行

    我有一个 JTable 和一个特定于每一行的弹出菜单 我想计算用户右键单击鼠标 Windows L F 以调出弹出菜单的行 我为表创建了一个 MouseListener 因此它可以在单击时获取 MouseEvent 并在正确的位置显示弹出菜