2011-02-09 11 views

答えて

2

DefaultTreeCellRendererを拡張できます。 getTreeCellRendererComponentメソッドでは、super()を呼び出し、条件を確認します。価値を分析することによって。その後、setFont()、setBackground()およびsetForeground()メソッドをそれに応じて呼び出します。

1

もう1つの方法は、TreeCellRendererを実装する内部クラスを作成することです。あなたがしなければならないことは、あなたが望むようにJLabelをカスタマイズすることだけです。

public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, 
     boolean expanded, boolean leaf, int row, boolean hasFocus) { 

    Component returnValue = null; 
    if ((value != null) && (value instanceof DefaultMutableTreeNode)) { 
     Object userObject = ((DefaultMutableTreeNode) value).getUserObject(); 
     if (userObject instanceof Employee) { 
     Employee e = (Employee) userObject; 
     firstNameLabel.setText(e.firstName); 
     lastNameLabel.setText(e.lastName); 
     salaryLabel.setText("" + e.salary); 
     if (selected) { 
      renderer.setBackground(backgroundSelectionColor); 
     } else { 
      renderer.setBackground(backgroundNonSelectionColor); 
     } 
     renderer.setEnabled(tree.isEnabled()); 
     returnValue = renderer; 
     } 
    } 
    if (returnValue == null) { 
     returnValue = defaultRenderer.getTreeCellRendererComponent(tree, value, selected, expanded, 
      leaf, row, hasFocus); 
    } 
    return returnValue; 
    } 

this siteから取られている。

関連する問題