很少用到swing方面的东西,最近在写程序的时候遇到一个问题,特请教大家。 我的代码如下: JScrollPane leftPanel=new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); JTree tree=new JTree(); leftPanel.add(tree); 
//leftPanel.setViewportView(tree); tree已经通过其他代码实现了里面的内容,这里只是为了方便简单表述一下。 后面的JFrame的显示等也不写了。 我的问题是这里的树显示的问题,如果我用leftPanel.add(tree)这个函数则tree不显示,但是如果我用leftPanel.setViewportView(tree)则树就能显示,可是以前做的很多程序,加JTable、JLabel、JTextArea等都是用add()函数,都没有问题,可是JTree就不行了,原因是什么? add()函数和setViewportView()的区别在哪里?

解决方案 »

  1.   

    修改一下我的问题:用JPanel加JTable、JLabel、JTextArea等都是用add()函数,都没有问题,可是用JScrollPanel加JTree就不行了,原因是什么?add()函数和setViewportView()的区别在哪里?
      

  2.   

    public void setViewportView(Component view)创建一个视口(如果有必要)并设置其视图。不直接为 JScrollPane 构造方法提供视图的应用程序应使用此方法指定将显示在滚动窗格中的滚动组件子级。add(Component comp);
    注:如果已经将某个组件添加到显示的容器中,则必须在此容器上调用 validate(),以显示新的组件。如果添加多个组件,那么可以在添加所有组件之后,通过只调用一次 validate 来提高效率。 看看api吧,上面都有的