Problemas no meu renderizador para nodos de TreeView

1 resposta
R

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;
	}

}

1 Resposta

D

Extenda JCheckBox, ao invés de extender JPanel contendo um JCheckBox…

Criado 26 de dezembro de 2003
Ultima resposta 27 de dez. de 2003
Respostas 1
Participantes 2