使用JTree

时间:2018-01-20 10:27:06

标签: java swing jtree

我使用JTree组件。 如您所见,第一个节点的名称不完全适合。

因为可以在一开始添加一个图标或箭头图标,这样当您单击它时,节点的名称将显示为连字符或完全隐藏。请举一些例子。 需要任何帮助。

谢谢。

1 个答案:

答案 0 :(得分:1)

我同意@MadProgrammer我们无法根据每个级别的字体指标和节点缩进计算确切的宽度。但是我们可以将节点名称限制为最大宽度10(是任何索引)并添加... ate end告诉用户它不是全文并将全文添加到工具提示。这是代码。

    final int MAX_TEXT_WIDTH = 10;
    tree.setCellRenderer(new DefaultTreeCellRenderer(){
         public Component getTreeCellRendererComponent(JTree tree, Object value,
                  boolean sel,
                  boolean expanded,
                  boolean leaf, int row,
                  boolean hasFocus) {

             Object strValue = value;
             String tooltip = null;
             if( value instanceof Object ) {
                 String val = value.toString();
                 if( val.length() > MAX_WIDTH ) {
                     // truncate teh string and add ... at end so that user can
                     strValue = val.substring(0, MAX_WIDTH )+"...";                      
                 } else {
                     strValue = val;
                 }
                 tooltip = val;
             }

             Component comp =  super.getTreeCellRendererComponent( tree,strValue,sel,expanded,leaf,row,hasFocus);

             if ( comp instanceof JComponent ) {
                 JComponent jcomp =   ( JComponent ) comp;
                 jcomp.setToolTipText(tooltip);
             }
             return comp;
         }
    });