Olá,
Criei um renderizador para nodo de uma treeview e estou com problemas nele.
O meu renderizador extende JPanel, implementa TreeCellRenderer e tem dois checkboxes.
O problema é que o usuário não consegue clicar nos checkboxes, ou seja, eles aparecem para o usuário, mas ele não consegue clicar neles. Parecem que estão desabilitados, mas não estão!
O codigo é esse (omiti o codigo irrelevante…)
/**
* @author mrack
*
* Cria um nodo de uma árvore com dois checkboxes para trabalhar a edição das
* propriedadedes de visualização e execução dos elementos de tela de um
* formulário
*/
public class DoubleCheckBoxTreeCellRender
extends JPanel
implements TreeCellRenderer {
private JCheckBox ver;
private JCheckBox executar;
private JLabel texto;
public DoubleCheckBoxTreeCellRender() {
super();
this.setLayout(new BorderLayout());
texto = new JLabel("Nodo");
this.add(texto, BorderLayout.WEST);
ver = new JCheckBox();
this.add(ver, BorderLayout.CENTER);
executar = new JCheckBox();
this.add(executar, BorderLayout.EAST);
}
/*
* (non-Javadoc)
*
* @see javax.swing.tree.TreeCellRenderer#getTreeCellRendererComponent(javax.swing.JTree,
* java.lang.Object, boolean, boolean, boolean, int, boolean)
*/
public Component getTreeCellRendererComponent(
JTree tree,
Object value,
boolean selected,
boolean expanded,
boolean leaf,
int row,
boolean hasFocus) {
//Obtem o objeto associado ao nodo
Object objeto = ((DefaultMutableTreeNode) value).getUserObject();
//Codigo irrelevante...
//Seta as propriedades dos checkboxes
if (objeto instanceof JComponent) {
ver.setSelected(((JComponent)objeto).isVisible());
executar.setSelected(((JComponent)objeto).isEnabled());
}
return this;
}
}