当前位置: 首页 > 知识库问答 >
问题:

如何通过右键单击选择列表/树/表格项目,同时打开关联菜单?

那铭
2023-03-14

当我右键单击Swing表/树/列表中的项目时,

  • 应选择该项目并
  • 应显示相应的JPopupMenu(关联菜单)

我怎样才能做到这一点?

我正在使用component.setComponentPopupMenu(popupMenu)为我的组件注册弹出菜单,这似乎会吞下右键单击事件,以便目标项目永远不会被选中。

共有1个答案

花和宜
2023-03-14

这里的问题是,右键点击确实被内置的弹出式触发器消耗掉了。要解决这个问题,请覆盖jpopmpmenu。秀(…) 方法(对于JTableJListJTree的示例工作方式类似):

public class ExtJPopupMenu extends JPopupMenu {

[...]

    @Override
    public void show(final Component invoker, final int x, final int y) {
        if (invoker instanceof JTable) {
            final JTable table = (JTable) invoker;
            final int selRow = table.rowAtPoint(new Point(x, y));
            if (selRow > -1 && !table.getSelectionModel().isSelectedIndex(selRow)) {
                table.getSelectionModel().setSelectionInterval(selRow, selRow);
            }
        }

        // ensure the newly selected item is focused
        invoker.requestFocus();

        // now build the appropriate menu for the selected item
        [...]

        // finally show the menu
        super.show(invoker, x, y);
    }
}

使用table在表中注册extjpopumenu实例。setComponentPopupMenu(…)

 类似资料:
  • 我知道如何通过鼠标左键点击所选项目来获取项目。我可以使用。 但我需要用鼠标右键点击项目。显示与单击的项目相关的弹出菜单。我试过这个: 但如果用户用右键点击该项,则会出现问题。右键单击不选择项目。如何按事件坐标选择项目或如何解决此问题?主要我需要得到的对象是点击没有选择项目,如果可能的话。

  • 这是点击事件。 这是xml 结果将显示在片段中,但抽屉菜单仍然显示。我该怎么做才能关闭它?任何人都给我建议,如何解决这个问题,任何帮助非常感谢。谢谢你。

  • 我正在使用Selenium webdriver。我无法从右键单击打开的选项中选择(例如第二个)选项。 在我当前的代码中,我可以右键单击webElement,但无法从右键单击后打开的列表中选择选项,因为它会自动消失。 因此,有了这段代码,我可以右键单击,但右键单击菜单会自动消失。我想从右键菜单中选择第二个选项。 请帮助!!!

  • "选择资源管理器中显示的项目" 选项组让您能选择添加到资源管理器关联菜单中的项目。当您在资源管理器和桌面上的一个文件和压缩文件图标上点击鼠标右键时,这些项目会显示。 "拖放上下文菜单" 选项可以用于从上下文菜单里删除 WinRAR 压缩和解压命令,在使用鼠标右键拖放文件后会显示此上下文菜单。默认启用这些选项,因此 WinRAR 建议在鼠标右键拖放之后使用一个目标文件夹作为目的地来压缩文件并解压文件

  • 我设置了一个JPopupMenu,它将显示用户是否右键单击JList中的某个单元格,但现在必须先选择该单元格,才能显示JPopupMenu。我想知道如何在右键单击后选择该单元格,然后像现在一样显示JPopupMenu。当没有选择任何项目并且鼠标不在列表中的任何项目上时,我也会显示一个菜单。 代码:

  • 我在Visual Studio C#IDE中定义了一个ContextMenuStri上下文菜单,并对程序进行编码,以便当用户右键单击屏幕上的一个对象时,上下文菜单成功弹出。用户可以从上下文菜单中选择一个项目,代码成功确定用户选择了哪个上下文菜单项。到目前为止还不错。问题是上下文菜单接受右键单击作为选择上下文菜单项的机制。当我不小心双击右键单击屏幕上的一个对象时,我注意到了这一点...菜单在第一次单