【问题标题】:How to display content by clicking on a JTree node如何通过单击 JTree 节点来显示内容
【发布时间】:2014-10-27 14:28:08
【问题描述】:

我的 JTree 有问题。 我的 JTree 显示(音乐、文档、图片、视频等),如 Windows 资源管理器。 例如,如果我单击一个节点并且该节点是一个包含 5 个(或更多)图像的文件夹 如何在 5 个单个 JLabels 中显示这 5 个图像???

【问题讨论】:

    标签: java swing jlabel jtree


    【解决方案1】:

    有两种方法可以解决这个问题。第一个(更简单)是将您的图像直接添加到 TreeModel 中,以便它们由 DefaultTreeCellRenderer 或其扩展呈现。第二,如果您不想将图像添加到您的 TreeModel,将创建一个自定义 TreeCellRenderer,它将所有图像绘制在一个组件中......但是您可能会遇到这种事件/布局问题。

    另外,请理解 JTree 使用 Renderer,并且您实际上不能向 JTree 添加任何组件,您只能渲染数据项。

    【讨论】:

    • 感谢您的快速响应,这对我处理 TreeCellRenderer 有所帮助,但它并没有解决我的问题(但帮助很大)非常感谢。
    【解决方案2】:

    好的,我用下面的代码得到了它,你会得到你点击的节点的路径...

    MouseListener ml = new MouseAdapter() { public void mousePressed(MouseEvent e) { TreePath selPath=MyTree.getPathForLocation(e.getX(), e.getY()); // <--- this was the part I searched for!

            System.out.println(selPath);
    
             if(selPath != null) {
                 if(e.getClickCount() == 1) {
                    mySingleClick(selPath);
    
                 }
                 else if(e.getClickCount() == 2) {
                    //myDoubleClick(selPath);
                 }
             }
         }
    
        private void mySingleClick(TreePath selPath) {
    

    // do whatever

        }
    };
            MyTree.addMouseListener(ml);
    

    有了这个我得到了路径,现在我可以使用路径来填充我的 JLabels 与图像。

    【讨论】:

      【解决方案3】:

      是的,在容器标签中使用带有 BoxLayout 的嵌套 JLabel:

      JLabel mycontainer = new JLabel();
      container.setLayout(new BoxLayout(mycontainer, BoxLayout.X_AXIS));
      JLabel icon1Label = new JLabel();
      JLabel icon2Label = new JLabel();
      icon1Label.setIcon(icon1);
      icon2Label.setIcon(icon2);
      mycontainer.add(icon1Label);
      mycontainer.add(icon2Label);
      

      我已经向您展示了如何存储两张图片,您可以使用不同的布局来存储多张图片。

      【讨论】:

      • 嗯,感谢您的快速响应。我已经将它与 GridLayout 一起使用,这不是问题,例如,如果您在左侧的 windows-Explorer 上单击一个节点,您将在右侧获得内容。就我而言,我想将此内容显示为 JLabels 中的图像。
      • 没有,请您详细说明或您想要什么或可能是什么,您可以放上图片以便我们理解。投反对票的人请在投反对票时发表评论。
      • @Blank 表示您想用缩略图更改箭头图像以展开树节点??
      • 不,我只想单击一个 JTree 节点(如果该节点是图片),然后单击此节点,我想在标签中查看此图像。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-23
      • 2012-06-10
      • 2019-10-17
      • 2015-02-05
      • 2021-04-11
      • 2011-02-18
      • 2013-02-11
      相关资源
      最近更新 更多