複数の文字列を表示しているJTreeがあるとします。たとえば、色のリストです。どのように異なる色/フォントの組み合わせでそのような木をレンダリングすることが可能でしょうか? TreeCellRendererを正しく実装する方法複数の異なるフォントを持つJTreeのノードをレンダリングする
ありがとうございました。
複数の文字列を表示しているJTreeがあるとします。たとえば、色のリストです。どのように異なる色/フォントの組み合わせでそのような木をレンダリングすることが可能でしょうか? TreeCellRendererを正しく実装する方法複数の異なるフォントを持つJTreeのノードをレンダリングする
ありがとうございました。
DefaultTreeCellRendererを拡張できます。 getTreeCellRendererComponentメソッドでは、super()を呼び出し、条件を確認します。価値を分析することによって。その後、setFont()、setBackground()およびsetForeground()メソッドをそれに応じて呼び出します。
もう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から取られている。