Componente para imitar o Explorer (treeview)

4 respostas
B

Fala ae pessoal,

to fazendo um sistema e precisava de algum componente que me auxiliasse na reprodução de um interface parecida com a do Windows Exlporer.

Seria algo assim:

Eu tenho uma lista de Atividades e essas atividades podem ser agrupadas, fazendo uma comparação com o windows explorer, as atividades seriam os arquivos e os agrupamentos as pastas.

Em fim, seria uma visualização tipo arvore. E nao apenas para visualizar, teria que ter DragAndDrop, para que eu possa remanejar as atividades de um agrupamento para o outro. Para simplificar, eu nao vou fazer agrupamentos de agrupamentos.

Eu olhei o JXTreeTable do SwingX, mas ao tentar mexer nele pelo NetBeans, eu nao consigo editar o model dele corretamente. Eu clico com o botão direito nele e clico em Table Contents…, mas as modificações que faço ali nao ficam gravadas.

Eu ia usar esse componente, porque eu gostaria de colocar mais informações ao lado de cada Atividade (como se fosse um JTable).

Poderia até ser o JXTree mesmo, aí eu colocaria um outro table ao lado com os detalhes da atividade.

Bom, nos dois casos, esses componentes permitem que eu faça DragAndDrop?

Se nao, qual outro componente eu poderia usar?

VLW

4 Respostas

hmichel

De uma olhada em http://blogs.sun.com/geertjan/entry/outlineview_sample

[]'s

paulorb.pacheco

Opa véio eu nunca usei mas tem um projeto mto bom mesmo chamado JDIC.
Da uma olhada no FileExplorer.

https://jdic.dev.java.net/

Espero que ajude…
Flw.

B

Blz, vou dar uma olhada quando chegar a noite em casa…

B

hmichel:
De uma olhada em http://blogs.sun.com/geertjan/entry/outlineview_sample

[]'s

Dei uma olhada kra, componente muito bom. Fiz quase tudo com ele, so que quando cheguei na parte de fazer o DnD e implementar o TransferHandle para ele, não consegui.

Quando trabalhamos com um JTree ele nos prove o metodo getSelectedPaths. Assim, eu consigo pegar o que foi selecionado. o Outline tem apenas o getSelectedRows, que retorna os indices selecionados, mas em um visualização TreeView, o indice nao diz muita coisa, pq ele é relativo aos nós que podem estar agrupados ou abertos.

Alguem ja usou esse Outline e sabe como fazer isso?

É muito estranho pq, esse componente você pode trabalhar com ele como se fosse um TreeView ou um Table normal, so que, quando chega nesse parte de pegar os selecionados, ele nao prove os métodos necessários que se encontraria numa TreeView.

So para explicar, no meu caso apenas os objetos do tipo Atividade podem ser movidos, e a minha TreeView tem 3 níveis:
1 nível: MarcosRoot
2 nível: Marco
3 nível: Atividade

Esse é o codigo de um TransferHandle para um JTree que eu fiz, apenas o método que to precisando agora:

public class TesteJTreeTransferHandle extends TransferHandler
{

    // outros metodos

    @Override
    protected Transferable createTransferable(JComponent c)
    {
        if ( ! ( c instanceof JTree ) )
        {
            return null;
        }

        JTree treeView = (JTree) c;

        TreePath caminhos[] = treeView.getSelectionModel().getSelectionPaths();
        
        List<Atividade> atividades = new ArrayList<Atividade>();
        
        for ( TreePath caminho : caminhos )
        {
            Object o = caminho.getLastPathComponent();
            
            if ( o instanceof Atividade )
            {
                atividades.add( (Atividade) o );
            }
        }

        Transferable t = new TesteTransferable( atividades );
        
        return t;
    }

}

Como posso fazer isso com o Outline?

Criado 14 de agosto de 2008
Ultima resposta 20 de ago. de 2008
Respostas 4
Participantes 3