JTree and dropdown options on right clicking nodes

前端 未结 3 1228
醉话见心
醉话见心 2021-01-15 01:49

I\'m trying to use the JTree and implement different drop downs for all the parent nodes and the children nodes.

Here\'s what I\'ve done:

pmTree.addM         


        
3条回答
  •  清酒与你
    2021-01-15 02:33

    Don't go as low-level as a MouseListener, instead use the api around componentPopupMenu. Doing so, the general approach is dynamically configure the componentPopup in the getPopupLocation method, some simple example snippet:

        JPopupMenu popup = new JPopupMenu();
        final Action action = new AbstractAction("empty") {
    
            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
            }
        };
        popup.add(action); 
        JTree tree = new JTree() {
    
            /** 
             * @inherited 

    */ @Override public Point getPopupLocation(MouseEvent e) { if (e != null) { // here do your custom config, like f.i add/remove menu items based on context // this example simply changes the action name TreePath path = getClosestPathForLocation(e.getX(), e.getY()); action.putValue(Action.NAME, String.valueOf(path.getLastPathComponent())); return e.getPoint(); } action.putValue(Action.NAME, "no mouse"); return null; } }; tree.setComponentPopupMenu(popup);

提交回复
热议问题