CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

如何调整JTree中JCheckBox类型节点宽度以使节点文字全部显示?

楼主tongping(侧耳倾听)2005-06-02 18:47:04 在 Java / J2SE / 基础类 提问

JTree+JCheckBox.  
   
  树节点是复选框,初始字体是默认,在选中后变为Bold。但这样JCheckBox的文字变宽,就会被裁掉一部分显示成省略号。在选中时调整继承了JCheckBox的TreeCellRenderer的size(setsize)没有作用。  
   
  如何调整是的文字不被裁掉?  
   
  多谢 问题点数:30、回复次数:4Top

1 楼tongping(侧耳倾听)回复于 2005-06-02 20:30:16 得分 0

哪位大虾指点一下?Top

2 楼gtlang78()回复于 2005-06-02 21:09:01 得分 30

import   java.awt.*;  
   
  import   javax.swing.*;  
  import   javax.swing.tree.DefaultTreeCellRenderer;  
  import   javax.swing.tree.TreeCellRenderer;  
   
  public   class   TreeCellRendererTest   {  
          public   static   void   main(String[]   args)   {  
                  JTree   tree   =   new   JTree();  
                  tree.setCellRenderer(new   TestRenderer());  
                  JScrollPane   sp   =   new   JScrollPane(tree);  
                  JFrame   f   =   new   JFrame();  
                  f.getContentPane().add(sp,   BorderLayout.CENTER);  
                  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
                  f.setSize(800,   600);  
                  f.setLocationRelativeTo(null);  
                  f.show();  
          }  
   
          private   static   class   TestRenderer   extends   DefaultTreeCellRenderer    
                  implements   TreeCellRenderer   {  
                  private   Font   boldFont   =   null;  
                  private   Font   font   =   null;  
                   
                  public   Component   getTreeCellRendererComponent(  
                                  JTree   tree,   Object   value,   boolean   selected,    
                                  boolean   expanded,   boolean   leaf,   int   row,   boolean   hasFocus)   {  
   
                          super.getTreeCellRendererComponent(  
                                          tree,   value,   selected,   expanded,   leaf,   row,   hasFocus);  
   
                          if   (font   ==   null)   {  
                                  font   =   getFont().deriveFont(Font.PLAIN);  
                                  boldFont   =   getFont().deriveFont(Font.BOLD);  
                          }  
                          if   (selected   ==   true)   {  
                                  setFont(boldFont);  
                          }  
                          else   {  
                                  setFont(font);  
                          }  
                          return   this;  
                  }  
   
                  public   Dimension   getPreferredSize()   {  
                          Font   oldFont   =   getFont();  
                          setFont(oldFont.deriveFont(Font.BOLD));  
                          Dimension   d   =   super.getPreferredSize();  
                          setFont(oldFont);  
                          return   d;  
                  }  
          }  
  }  
  Top

3 楼huhumyjava(楼梯口)回复于 2005-06-03 08:53:22 得分 0

 
  搂主,JTree+JCheckBox的方法代码,能否贴出来共享一下Top

4 楼tongping(侧耳倾听)回复于 2005-06-03 10:14:13 得分 0

public   class   CheckBoxRenderer   extends   JCheckBox   implements   TreeCellRenderer   {  
   
  private   Map   fontsMap   =   new   HashMap();  
   
  private   Map   colorsMap   =   new   HashMap();  
   
  private   final   static   String   FONT_BOLD   =   "boldfont";  
   
  private   final   static   String   FONT_ITALIC   =   "italicfont";  
   
  private   final   static   String   FONT_DEFAULT   =   "plainfont";  
   
  private   final   static   String   COLOR_RED   =   "redcolor";  
   
  private   final   static   String   COLOR_BLACK   =   "blackcolor";  
   
  private   final   static   String   COLOR_BLUE   =   "bluecolor";  
   
  private   final   static   String   COLOR_PARTIALSELECTED   =   "graycolor";  
   
  private   void   loadColors()   {  
  colorsMap.put(CheckRenderer.COLOR_BLACK,   Color.BLACK);  
  colorsMap.put(CheckRenderer.COLOR_RED,   Color.RED);  
  colorsMap.put(CheckRenderer.COLOR_BLUE,   Color.BLUE);  
  colorsMap.put(CheckRenderer.COLOR_PARTIALSELECTED,   new   Color(0,0,160));  
  }  
   
  private   void   loadFonts()   {  
   
  fontsMap.put(CheckRenderer.FONT_DEFAULT,   new   Font("Arial",   Font.PLAIN,  
  11));  
  fontsMap.put(CheckRenderer.FONT_BOLD,   new   Font("Arial",   Font.BOLD,   11));  
   
  }  
   
  public   CheckRenderer()   {  
  loadFonts();  
  loadColors();  
  }  
   
  public   Component   getTreeCellRendererComponent(JTree   tree,   Object   value,  
  boolean   selected,   boolean   expanded,   boolean   leaf,   int   row,  
  boolean   hasFocus)   {  
   
  String   stringValue   =   tree.convertValueToText(value,   selected,   expanded,  
  leaf,   row,   hasFocus);  
   
  PlanTreeNode   node   =   (PlanTreeNode)   value;  
   
   
   
  if   (hasFocus)   {  
  this.setBackground(UIManager.getColor("Tree.selectionBackground"));  
  setFont((Font)   fontsMap.get(CheckRenderer.FONT_BOLD));  
  }   else   {  
  this.setBackground(tree.getBackground());  
  setFont((Font)   fontsMap.get(CheckRenderer.FONT_DEFAULT));  
  }  
   
  return   this;  
  }  
   
   
  public   Dimension   getPreferredSize(){  
          Font   oldFont   =   getFont();  
                  setFont((Font)fontsMap.get(FONT_BOLD));  
                  Dimension   d   =   super.getPreferredSize();  
                  setFont(oldFont);                  
                  return   d;  
  }  
   
  }Top

相关问题

  • 树控件中如何使节点显示窗体?
  • JTree节点图案的问题
  • jtree如何根据节点显示的字符串得到节点名字
  • 如何根据JTree节点信息不同改变节点图案?
  • jtree如何知道选中节点的TEXT?
  • 请问,如何实现并处理JTree节点Multi-Selected?
  • (高分) JTree 节点是如何判断双击的?
  • HELP~~~~~~JTREE里面如何避免重复的节点出现
  • 为什么JTree 初始时根节点是展开的?
  • 如何响应JTREE中的节点点击事件??

关键词

  • 文字
  • swing
  • null
  • jcheckbox
  • jtree
  • treecellrenderer
  • tree
  • 调整
  • jframe
  • boolean

得分解答快速导航

  • 帖主:tongping
  • gtlang78

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo