我使用JTree
组件。
如您所见,第一个节点的名称不完全适合。
因为可以在一开始添加一个图标或箭头图标,这样当您单击它时,节点的名称将显示为连字符或完全隐藏。请举一些例子。 需要任何帮助。
谢谢。
答案 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;
}
});