免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4090 | 回复: 9
打印 上一主题 下一主题

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-01 11:04 |显示全部楼层 |倒序浏览
我搞了一个JTree,子结点是人名,我想在子结点男性同女性的图标不一样,请问可以实现吗?
DefaultTreeCellRenderer render=new DefaultTreeCellRenderer();
render.setLeafIcon(new ImageIcon("QQ.jpg");      
jtree.setCellRenderer(render);
我想实现为(但这样是不行的)
if(sex.equals("男")
   render.setLeafIcon(new ImageIcon("QQ_male.jpg");
else
   render.setLeafIcon(new ImageIcon("QQ_female.jpg");
jtree.setCellRenderer(render);
请问有其它方法实现吗?请大家帮帮忙。多谢先!!

论坛徽章:
0
2 [报告]
发表于 2005-08-01 22:25 |显示全部楼层

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

请那位高手帮忙一下好吗?多谢先了

论坛徽章:
0
3 [报告]
发表于 2005-08-02 09:59 |显示全部楼层

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

多谢!!

论坛徽章:
0
4 [报告]
发表于 2005-08-02 13:10 |显示全部楼层

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

此功能我通过改编后,把它移植到我的程序中,可以到是可以的,但我的程序的性别判断是通过数据库连接来获取的,所以让程序执行变得很慢,在此界面上的其它的一个动画线程受到了很大影响。

论坛徽章:
0
5 [报告]
发表于 2005-08-02 16:30 |显示全部楼层

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

请教一下这位高手,请问怎么作cache.能给一点示例吗?多谢先

论坛徽章:
0
6 [报告]
发表于 2005-08-02 17:01 |显示全部楼层

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

我的子结点的名字都是从数据库中获取的,只用一次访问就从数据库中读出子结点名,但当每次单击子结点时都会连接数据库获取子结点的详细信息显示的一个文本框中。

论坛徽章:
0
7 [报告]
发表于 2005-08-02 21:31 |显示全部楼层

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

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

论坛徽章:
0
8 [报告]
发表于 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
9 [报告]
发表于 2005-08-03 13:00 |显示全部楼层

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

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

论坛徽章:
0
10 [报告]
发表于 2005-08-03 14:47 |显示全部楼层

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

多谢!!
知道怎么做了,非常感激!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP