Boa Tarde Pessoal estou com um probleminha aqui que eu não consigo resolver, estou criando uma classe que implementa a TreeCellRenderer, assim utilizo ela em uma JTree:
package jsprint.gui.componentes.renderer;
import java.awt.Color;
import java.awt.Component;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTree;
import javax.swing.UIManager;
import javax.swing.tree.TreeCellRenderer;
public class JTreeSprintRenderer extends JPanel implements TreeCellRenderer {
protected boolean selected;
private boolean hasFocus;
private boolean drawsFocusBorderAroundIcon;
transient protected Icon closedIcon;
transient protected Icon leafIcon;
transient protected Icon openIcon;
protected Color textSelectionColor;
protected Color textNonSelectionColor;
protected Color backgroundSelectionColor;
protected Color backgroundNonSelectionColor;
protected Color borderSelectionColor;
JTextArea field = new JTextArea();
public JTreeSprintRenderer() {
Object value = UIManager.get("Tree.drawsFocusBorderAroundIcon");
drawsFocusBorderAroundIcon = (value != null && ((Boolean)value).booleanValue());
setLayout(new GridLayout(1,1));
add(field);
field.setBorder(BorderFactory.createEmptyBorder());
}
/**
* Configures the renderer based on the passed in components.
* The value is set from messaging value with toString().
* The foreground color is set based on the selection and the icon
* is set based on on leaf and expanded.
*/
public Component getTreeCellRendererComponent(JTree tree, Object value,
boolean sel, boolean expanded, boolean leaf, int row,
boolean hasFocus) {
String stringValue = tree.convertValueToText(value, sel, expanded, leaf, row, hasFocus);
this.hasFocus = hasFocus;
field.setText(stringValue);
if (sel) {
field.setForeground(Color.white);
field.setBackground(Color.blue);
} else {
field.setForeground(Color.black);
field.setBackground(Color.white);
}
if (!tree.isEnabled()) {
field.setEnabled(false);
} else {
field.setEnabled(true);
}
if (hasFocus) {
this.setBorder(BorderFactory.createLineBorder(Color.blue));
//this.setLeafIcon(new ImageIcon("src/jsprint/gui/image/menu/open.png"));
} else {
this.setBorder(BorderFactory.createEmptyBorder());
}
selected = sel;
return this;
}
}
O que eu gostaria de fazer e estou precisando de ajuda:
Eu gostaria de colocar um icone diferente para a raiz, para o folhas e para os ramos da classe, como eu posso fazer isto ?
