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

右键单击JTree选择项目

夹谷和裕
2023-03-14

我知道如何通过鼠标左键点击所选项目来获取项目。我可以使用TreeSelectionListener

tree.addTreeSelectionListener(new TreeSelectionListener(){
    @Override
    public void valueChanged(TreeSelectionEvent tse) {
        DefaultMutableTreeNode node = 
                (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
    }
});

但我需要用鼠标右键点击项目。显示与单击的项目相关的弹出菜单。我试过这个:

private void treeClicked(java.awt.event.MouseEvent evt) {
    if(SwingUtilities.isRightMouseButton(evt)){
        this.listRightClickMenu.show(this,evt.getX(),evt.getY());
            DefaultMutableTreeNode node = 
        (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
    }
}                            

但如果用户用右键点击该项,则会出现问题。右键单击不选择项目。如何按事件坐标选择项目或如何解决此问题?主要我需要得到的对象是点击没有选择项目,如果可能的话。

共有1个答案

班安平
2023-03-14

使用此MouseListener:

MouseListener ml = new MouseAdapter() {
     public void mousePressed(MouseEvent e) {
         if(SwingUtilities.isRightMouseButton(e)){
         int selRow = tree.getRowForLocation(e.getX(), e.getY());
         TreePath selPath = tree.getPathForLocation(e.getX(), e.getY());
                 tree.setSelectionPath(selPath); 
                 if (selRow>-1){
                    tree.setSelectionRow(selRow); 
                 }
     }
 };
 tree.addMouseListener(ml);
 类似资料:
  • 我有一个JTree,我可以(ctrl)选择多个节点。当我右键点击时,我会弹出一个窗口,在那里我可以选择“刷新”。(本网站上还有其他问题解释如何做到这一点) 问题是,当我选择多个节点并右键单击时,只有右键单击的节点被选中,其他节点被取消选择。 例如,我想选择3个节点(叶),右键单击,选择刷新,仍然选择这3个节点。 有什么建议吗?谢谢。 例子:

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

  • 所以我需要的功能是组合框,在扩展时可以右键单击,然后弹出菜单显示不同的操作。 为此,我使用以下构造函数扩展了JCombobox: 创建了HistoryComboPopup类,它扩展了BasicComboPopup,并有一个鼠标侦听器 弹出窗口工作,我可以处理它的菜单点击。唯一的麻烦是当我打开JPopupMenu时,组合框关闭,我点击右键的项目不再出现。 我目前不知道该怎么办,所以任何帮助都将不胜感

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

  • 我正在为一个服务器做一个插件,我是开发者,我正在开发一个插件!我想通过执行boss give lvl命令来生成boss鸡蛋

  • 在IntelliJ中,当我右键单击测试时,我再也看不到“RunClassX或MethodY”。事实上,没有“运行”窗口,当我右键单击时,我无法运行任何类。 大约3个小时前,一切正常,所以我不太确定发生了什么变化? IntelliJ 10.5.1(许可和非社区版)Java1.6.0_24 有人能帮我吗?PS:这适用于所有项目。 更新1我安装了IDEA 11并从10导入了设置,然后发现这不是免费升级。