Melhor API para criar algo muito dinâmico

15 respostas
Bani

Olá pessoal,

Como nunca havia trabalhado com essa parte gráfica do J2SE gostaria de ouvir de quem tem mais experiência qual seria a melhor forma de trabalhar com uma interface gráfica que vai ser absurdamente customizada e dinâmica.

Basicamente, o usuário vai montando na tela um diagrama mais ou menos parecido com um organograma, adicionando as caixinhas e ainda criando umas conexões malucas (com vários símbolos meigos) entre elas. Pode criar uma árvore saindo de uma, fazer algo linear em outra, mudar uma do meio, etc.
Além de criar na hora, eu vou precisar salvar a estrutura em XML e depois regerar o diagrama a partir dele.
E cada pedacinho tem que aceitar duplos cliques, context menus e coisas do tipo para o usuário editar atributos.

Ah, e detalhe que o sistema inteiro tem que estar pronto em 2 semanas.

Pelo que eu vejo por aí as APIs que tem componentes de alto nível são meio chatinhas em relação a posicionamento dos mesmos, então parece não ser flexível o suficiente para fazer isso que eu preciso. Então o que vocês sugerem?

15 Respostas

E

Tenta o GEF (Graph Editing Framework, salvo engano)

Alguns editores de UML, como o ArgoUML e o Poseidon, usam esse framework para interação com grafos. Não tenho idéia da utilização dele porque nunca usei :oops:

http://gef.tigris.org

vamorim

Estou usando a JGraph. Muito boa.

cv1

Nao confundir com o outro GEF, parte do Eclipse :wink:

Bani

Realmente parece que tanto o GEF quando o JGraph seriam capazes de construir os diagramas que preciso, e como o JGraph parece ser mais completo e estar mais documentado prefiro usar ele.
Porém baixei um dos programas exemplo do site do JGraph e achei ele meio lento. Já no Argos, que usa GEF, após carregar fica bem responsivo.

Então gostaria de saber de quem já está usando JGraph: ele é pesado mesmo? Minha aplicação vai rodar em computadores com 64Mb de RAM, então se for ficar inviável de usar é melhor eu já saber agora!

brlima

Curiosidade: Esses caras ai sao mais pra criar interfaces do tipo Diagramas??? E só pra isso?

Pergunto isso pq, ha um tempo atras eu tava querendo montar uma aplicação pra que o usuario montasse uma tela swing. Mas montar telas simples, nada mto complicado. E nao achei nada.

pcalcado

“brlima”:
Curiosidade: Esses caras ai sao mais pra criar interfaces do tipo Diagramas??? E só pra isso?

Pergunto isso pq, ha um tempo atras eu tava querendo montar uma aplicação pra que o usuario montasse uma tela swing. Mas montar telas simples, nada mto complicado. E nao achei nada.

Que tal algo tipo o cafeteira?

[]s

brlima

“pcalcado”:
“brlima”:
Curiosidade: Esses caras ai sao mais pra criar interfaces do tipo Diagramas??? E só pra isso?

Pergunto isso pq, ha um tempo atras eu tava querendo montar uma aplicação pra que o usuario montasse uma tela swing. Mas montar telas simples, nada mto complicado. E nao achei nada.

Que tal algo tipo o cafeteira?

[]s

:smiley: Nao é bem assim. eu queria montar uma aplicação desse tipo. Pois queria acrescentar algumas propriedades que afetam o meu codigo e o desenho da tela tb.

vamorim

Infelismente estou usando o JGraph para diagramas pequenos e com uma máquina relativamente boa (que meu chefe não leia isso!).

De todo jeito, depende. Você quer eficiência em quê? Alocação de memória? Algoritmos embutidos?

Sugestão 1: Testar algumas das ferramentas desenvolvidas com o JGraph numa carroça dessas.

Sugestão 2: pegar um dos demos, entupir com o que mais vai ser feito (número de nós, ou número de arestas, ou deslocamentos, etc.) e realizar um teste de performace. :wink:

pcalcado

“brlima”:

:smiley: Nao é bem assim. eu queria montar uma aplicação desse tipo. Pois queria acrescentar algumas propriedades que afetam o meu codigo e o desenho da tela tb.

Pois é, o cafeteira é livre. Que tal umas alterações? :wink:

[]s

vamorim

“brlima”:
Curiosidade: Esses caras ai sao mais pra criar interfaces do tipo Diagramas??? E só pra isso?

Ou seja, JGraph é uma API para Java (J) que serve para trabalhar com Grafos (Graph). Ou seja J + Graph = JGraph :smiley:

Falando sério. JGraph possui um conjunto de algoritmos que podem ser usados na resolução de muitos problemas relacionados com grafos. Não é simplesmente para desenho de diagrams. Serve para muitas coisas como isso:

Bani

“vamorim”:

Sugestão 1: Testar algumas das ferramentas desenvolvidas com o JGraph numa carroça dessas.

Eu testei em um computador com 4x mais memoria e achei lento! :cry:

Não quero mais trabalhar :puppydogeyes:

vamorim

Já que a eficiência tá doendo tanto, talvez seja o caso de usar a Grappa ou alguma coisa com GraphViz como isso. Ou quem sabe alguma coisa comercial.

Sinto muito mas meu instinto humorístico não me permite terminar esse post sem a seguinte mensagem: Vai trabaiá, muié!

dukejeffrie

Aí é que tá. Bani, c não acha que se fosse fácil, já ia ter um monte de aplicação parecida??

Te prometo que em duas semans (quantas pessoas? 6, no melhor caso?) não sai nada assim. Fazer GUI demora. Ainda mais se o seu time não tem muita experiência.

Masssss… se vc conseguir reduzir a especificação pra caber em duas semanas, vc pode implementar algo na linha da GML, e usar aquele grafo básico da faculdade (i.e.) sem atributos, sem algoritmos.

Daí vc serializa com XStream ou Castor ou etc. Essa parte é baba.

Daí vc pega metade do seu time pra trabalhar na GUI. Eles vão ter que implementar MVC, é bom que seja gente com experiência nisso. Nem olha a API de DragNDrop, c só vai perder tempo. C vai ter que implementar também um modelo específico pra sua área de trabalho “infinita”.

Acho que vale a pena olhar o SwingBuilder do Groovy. Na beta-4 tá funcionando bunitinho! :wink:

Prepare-se para uma semana de 50 horas. E siga os princípios do cronograma encaixotado (com data pra começar e pra terminar):

:arrow: Se tiver feio, deixa feio
:arrow: Se quebrar, cola, não conserta
:arrow: Todo mundo tem culpa se estiver ruim
:arrow: Todo mundo ganha breja se entregar no prazo
:arrow: A empresa paga a pizza

Boa sorte, do fundo do coração.

Bani

2 pessoas, sendo que a outra nunca programou Java na vida! hehehe

Tipo, não é grafo que eu preciso fazer… é um diagraminha maluco mais ou menos parecido com um fluxograma que o cara que inventou está longe demais para eu poder bater nele.
Mas aparentemente as ferramentas utilizadas para desenhar grafos servem bem para fazer ele.

É o que eu mais vou precisar :wink:
E lembrarei das dicas!

luiz_ross

Eu tava fazendo a um tempo atras (acho que exatamente) isso que vc precisa pra ferramenta de workflow que estou (tentando)desenvolvendo Qualquer coisa se tiver precisando é só dar um toque!!!

Criado 17 de junho de 2004
Ultima resposta 23 de jun. de 2004
Respostas 15
Participantes 8