把jtree1=new JTree(root);放到倒数第三行你那个actionPanel.setLayout(new FlowLayout(FlowLayout.LEFT));有用吗?删掉!

解决方案 »

  1.   

     jtree1=new JTree(root);
      root=new DefaultMutableTreeNode("Color"); //这是个新的根节了
    此时jtree1里面的root不等于你此时的new 节点
    除非你此时
    再调用一下jtree1.setRoot(root)//假设有这样一个方法(java swing中肯定有类似这样的方法)
    那么就它会显示出来.
      

  2.   

    估计actionPanel都没有显示出来,或者它太小,显示不了JTree。可以打印下它的大小。
      

  3.   


    public JScrollPane createTree() { 
             DefaultMutableTreeNode top = new DefaultMutableTreeNode(getString("TreeDemo.music")); 
             DefaultMutableTreeNode catagory = null ; 
      DefaultMutableTreeNode artist = null; 
      DefaultMutableTreeNode record = null; 
      
      // open tree data  
      URL url = getClass().getResource("/resources/tree.txt"); 
      
      try { 
          // convert url to buffered string 
          InputStream is = url.openStream(); 
          InputStreamReader isr = new InputStreamReader(is, "UTF-8"); 
          BufferedReader reader = new BufferedReader(isr); 
      
          // read one line at a time, put into tree 
          String line = reader.readLine(); 
          while(line != null) { 
      // System.out.println("reading in: ->" + line + "<-"); 
      char linetype = line.charAt(0); 
      switch(linetype) { 
         case 'C': 
           catagory = new DefaultMutableTreeNode(line.substring(2)); 
           top.add(catagory); 
           break; 
         case 'A': 
           if(catagory != null) { 
               catagory.add(artist = new DefaultMutableTreeNode(line.substring(2))); 
           } 
           break; 
         case 'R': 
           if(artist != null) { 
               artist.add(record = new DefaultMutableTreeNode(line.substring(2))); 
           } 
           break; 
         case 'S': 
           if(record != null) { 
               record.add(new DefaultMutableTreeNode(line.substring(2))); 
           } 
           break; 
         default: 
           break; 
      } 
      line = reader.readLine(); 
          } 
      } catch (IOException e) { 
      } 
      
      tree = new JTree(top) { 
          public Insets getInsets() { 
      return new Insets(5,5,5,5); 
          } 
      }; 
              
             tree.setEditable(true); 
                  
      return new JScrollPane(tree); 
         }
      

  4.   

    我照你说的把它放下来了,可是在actionPanel显示的树太小了,我想实现动态的改变,还应该怎么做呢,谢谢了root=new DefaultMutableTreeNode("Color"); 
            red=new DefaultMutableTreeNode("red"); 
            blue=new DefaultMutableTreeNode("green"); 
            green=new DefaultMutableTreeNode("green"); 
            
            jtree1=new JTree(root);
            root.add(red); 
            root.add(blue); 
            root.add(green);
                    
            actionPanel.setPreferredSize(new Dimension(200, 380));
            actionPanel.add(new JScrollPane(jtree1));
      

  5.   

    你好,你的功能我看了,不过太长,我也不打算这样做,谢谢你了,还有一个问题就是如何通过解析xml或owl文档动态添加树节点呢,谢谢了
      

  6.   


    我的左边是actionPanel,右边是contentPanel,jtree1显示在actionPanel上的JScollPane中,可是树没有铺满整个actionPanel,该如何修改呢,一些关键代码如下root=new DefaultMutableTreeNode("Color"); 
            red=new DefaultMutableTreeNode("red"); 
            blue=new DefaultMutableTreeNode("green"); 
            green=new DefaultMutableTreeNode("green"); 
            
            jtree1=new JTree(root);
            root.add(red); 
            root.add(blue); 
            root.add(green);
        
                    
            actionPanel.setPreferredSize(new Dimension(200, 380));
            actionPanel.add(new JScrollPane(jtree1));
        
        
        jsplit=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,actionPanel,contentPanel);
        jsplit.setOneTouchExpandable(true); 
        jsplit.setMinimumSize(new Dimension(100,50));
        
        this.getContentPane().add(showPanel,BorderLayout.NORTH);
         this.getContentPane().add(jsplit);
    谢谢了
      

  7.   

    哎,我有这类的问题,我用的是java核心技术上面的GBC方式布局,然后最大化窗口,里面东西的大小却始终居中不变,试过好多的方法都没作用~~~~
      

  8.   

    给actionPanel设布局,BorderLayout