免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 末代地主
打印 上一主题 下一主题

!!请问JTree的子结点图标可以设成两种不同的图像吗?!! [复制链接]

论坛徽章:
0
11 [报告]
发表于 2005-08-02 21:24 |只看该作者

!!请问JTree的子结点图标可以设成两种不同的图像吗?!!

建议在第一次访问某个子节点的时候把信息取出来的信息保存在TreeModeL里。这样不用每次都去数据库里取。

论坛徽章:
0
12 [报告]
发表于 2005-08-02 21:31 |只看该作者

!!请问JTree的子结点图标可以设成两种不同的图像吗?!!

谢谢,但我不会用TreeModel。能不能给一个实例吗?多谢了!!

论坛徽章:
0
13 [报告]
发表于 2005-08-03 11:10 |只看该作者

!!请问JTree的子结点图标可以设成两种不同的图像吗?!!

你现在的数据是怎么取出来的?能看一下你的程序片断么?

论坛徽章:
0
14 [报告]
发表于 2005-08-03 12:48 |只看该作者

!!请问JTree的子结点图标可以设成两种不同的图像吗?!!

class AddressList extends JFrame implements TreeSelectionListener,ActionListener
{。。。。。。。
AddressList()
    {。。。。。。。   
     jtree=new JTree(root);   
     。。。。。
     showData();
     DefaultTreeCellRenderer render=new DefaultTreeCellRenderer(); //渲染结点
     render.setLeafIcon(new ImageIcon("QQ.jpg");      
     jtree.setCellRenderer(render);                  
   .。。。。。。      
     setResizable(false);     
    }  
public void showData()
    { try
         {Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"; }
     catch(ClassNotFoundException e11)
         {System.out.println("错误"+e11); }
     try
           {sqlcon=DriverManager.getConnection("jdbcdbc:minm","","";
            sql=sqlcon.createStatement();
            rs=sql.executeQuery("select distinct * from 通讯录表";                  
            while(rs.next())
                 {String n1=rs.getString(1);               
                  String n8=rs.getString(;                              
                  if(n8.equals("高中同学")
                     {DefaultMutableTreeNode t21=new DefaultMutableTreeNode(n1);                  
                      t2.add(t21);                  
                      }
                  else if(n8.equals("大学同学")
                     {DefaultMutableTreeNode t11=new DefaultMutableTreeNode(n1);
                      t1.add(t11);         
                      }
                  else if(n8.equals("初中同学")
                      {DefaultMutableTreeNode t31=new DefaultMutableTreeNode(n1);
                       t3.add(t31);                  
                      }   
                  else if(n8.equals("小学同学")
                      {DefaultMutableTreeNode t41=new DefaultMutableTreeNode(n1);
                       t4.add(t41);                    
                      }
                  else
                      {DefaultMutableTreeNode t51=new DefaultMutableTreeNode(n1);
                       t5.add(t51);                    
                       }                                                                             
                  }              
             }
     catch(SQLException e1){}
    }
public void valueChanged(TreeSelectionEvent e)
    {if(e.getSource()==jtree)
        {dmtn=(DefaultMutableTreeNode)jtree.getLastSelectedPathComponent();
         if(dmtn.isLeaf())
             {try
                 {sqlcon=DriverManager.getConnection("jdbcdbc:minm","","";
                  sql=sqlcon.createStatement();
                  rs=sql.executeQuery("select * from 通讯录表 where 姓名='"+dmtn.toString()+"'";
                  jta.setText("");        
                  while(rs.next())
                     {String n1=rs.getString("姓名");
                      String n2=rs.getString("性别");
                      String n3=rs.getString("QQ");
                      String n4=rs.getString("家庭电话");
                      String n5=rs.getString("固定电话");
                      String n6=rs.getString("移动电话");
                      String n7=rs.getString("所在地址");
                      String n8=rs.getString("关系");
                      String n9=rs.getString("生日");
                      jta.append("显示从数据库中获取的数据......");                                                                  
                      }
                  sqlcon.close();      
                 }
              catch(SQLException e1){}
              }  
         else
             {jscr1.setViewportView(jtree); //还是不能更新
              jta.setText("");
             }      
        }
        //把jtree子结点上的图标设成两种,即男性同女性的头像用不同图标表示,但实现后程序执行变得很慢              
       /*
       if(!(cellRenderered))
         {cellRenderered=true;
          jtree.setCellRenderer(new DefaultTreeCellRenderer()
               {public Component getTreeCellRendererComponent(JTree tree,Object value,
               boolean sel, boolean expanded, boolean leaf,int row, boolean hasFocus)
                 {super.getTreeCellRendererComponent(tree, value, sel, expanded,leaf, row, hasFocus);
                  if(leaf)
                     {ImageIcon ii= new ImageIcon("QQ.jpg");
                      setIcon(ii);                             
                      try
                          {Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  
                           sqlcon=DriverManager.getConnection("jdbcdbc:minm","","");
                           sql=sqlcon.createStatement();
                           rs=sql.executeQuery("select distinct * from 通讯录表 where 姓名='"+value.toString()+"'");
                           if(rs.next())
                             {if(rs.getString(2).equals("男"))
                                ii = new ImageIcon("QQ(ll).jpg");
                              else
                                ii = new ImageIcon("QQ(vvv).jpg");
                              }                       
                            sqlcon.close();  
                            }
                        catch(ClassNotFoundException e12)
                            {System.out.println("错误"+e12); }
                        catch(SQLException e1){}
                        setIcon(ii);              
                        }
                   return this;
                  }
                });  
          } */
    }     
public void actionPerformed(ActionEvent e)
    {if(e.getSource()==jmi11)
        {int inserting=JOptionPane.showConfirmDialog
                   (null,"确定退出吗?","Warning",JOptionPane.OK_CANCEL_OPTION);
         if(inserting==JOptionPane.OK_OPTION)
              {System.exit(0);
               }
        }
。。。。
   }
}

论坛徽章:
0
15 [报告]
发表于 2005-08-03 13:00 |只看该作者

!!请问JTree的子结点图标可以设成两种不同的图像吗?!!

希望各位能提出宝贵建议!!!!
多谢!!!

论坛徽章:
0
16 [报告]
发表于 2005-08-03 13:40 |只看该作者

!!请问JTree的子结点图标可以设成两种不同的图像吗?!!

哦,这样的。你已经在用model了。呵呵。
我的思路。(10天之内没有时间写程序了。工作太忙,抱歉,只能讲个大概)。

不要直接把人名放到TreeNode里。创建一个Contact类。里边既存放name,同时存放性别。然后在创建image的时候,把value转换成Contact类型,然后把性别取出来,就不用访问数据库了。

论坛徽章:
0
17 [报告]
发表于 2005-08-03 14:47 |只看该作者

!!请问JTree的子结点图标可以设成两种不同的图像吗?!!

多谢!!
知道怎么做了,非常感激!!

论坛徽章:
0
18 [报告]
发表于 2005-08-03 15:27 |只看该作者

!!请问JTree的子结点图标可以设成两种不同的图像吗?!!

不客气
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP