Área de visualização infinita no swing

11 respostas
aloha

Eu preciso desenvolver uma ferramenta que tenha uma área de visualização variável, tipo autocad, onde para mover a área o usuário clica e a movimenta.

O problema é que não tenho idéia por onde começar, alguem tem alguma dica de como eu poderei realizar esta façanha?

Obrigado!

11 Respostas

Guilherme_Gomes

Ajuda conceitual:

Faz um listener pra ver um drag-n-drop do mouse no painel.

se arrastando
se não existe area util na direção do drag
redimensiona painel e arruma posições dos itens atuais
move painel

Você calcula a direção do drag pelo ponto anterior do mouse e ponto atual.
Veja se naquela direção existe mais painel ou se já está no limite…
Caso você precise aumentar ou painel e o usuario esteja indo para o topo, esquerda ou os dois, você terá que realocar os objetos do painel para que visualmente eles fiquem no ‘mesmo lugar’…

Acho que isso vai dar bastante trabalho ^^
A minha solução foi algo que imaginei agora, nunca fiz algo parecido nem sei se existe algo pronto pra te ajudar…

Espero ter ajudado…

fantomas

As scroll bars já não dariam conta deste recado?

flws

aloha

Guilherme Gomes, eu também imaginei isso a principio, mas como vc disse parece ser trabalhoso d+ (se for assim eu acho q vou criar o controle AreaInfinita)

fantomas, poiseh eu posso meter um scroll bar do lado direito e em baixo, a principio com a tela limpa eles nao apareceriam mas vai chegar uma hora q o cara irá precisar rolar esta barra mas como c ela ainda nao está ativa? entendeu? acho q nao da nao :confused:

Obrigado por enquanto!

aloha

Alguém conhece o programa de UML Jude? Aquela área de edição dele parece ser bem o que eu quero e se não estou enganado o Jude foi feito em Java também.

Vocês sabem como fazer uma área tipo aquela? Será que o Jude tem o código aberto?

Qualquer dica é bem vinda!

Obrigado

fantomas

Essa de tela ativa de deixou intrigado, o significa isto?

Acabei de executar o Jude e a àrea de edição para diagrama de classes tem justamente as scroll bars para ajudar a deslocar a imagem. O detalhe que reparei foi o box para package, quando eu peguei o canto inferior direito e puxei para esticar o box (streatching) a tela foi se deslocando a medida que ameaçava a ultrapassar seus limites. É este o efeito que vc procura?

Desculpe as perguntas, mas quanto mais clara a ideia mais alta é a possibilidade de alguem aparecer com a resposta.

flws

aloha

Exatamente isso fantomas! :slight_smile:

aloha

Eu pensei no seguinte, coloco um panel e faço dele minha área de edição, q vai ser do tamanho exato do panel (estará dentro dele mas será do mesmo tamanho). Dai com 2 barras de rolagem, como dito pelo fantomas, eu posso redimensionar a área de edição que está dentro do panel e entao quando o tamanho da área de edição ultrapassar o tamanho do panel, a barra de rolagem ativa. ok… mas:

Como faz para acoplar a barra de rolagem num panel e fazer ela entender quando tem q “aparecer”?

Obrigado!

Guilherme_Gomes

Faz um teste: coloca um painel dentro de um painel com scrollbar e um botão que aumenta o painel interno (seria legal colocar uma cor no painel interno). Veja o que acontece quando o painel interno aumenta demais, se cria as scrolls… Coisa do tipo.

É fazendo esses exercicios simples que você começa a entender as coisas…

aloha

Guilherme Gomes:
Faz um teste: coloca um painel dentro de um painel com scrollbar e um botão que aumenta o painel interno (seria legal colocar uma cor no painel interno). Veja o que acontece quando o painel interno aumenta demais, se cria as scrolls… Coisa do tipo.

É fazendo esses exercicios simples que você começa a entender as coisas…

"coloca um painel dentro de um painel com scrollbar " ai que está a dúvida, como põe scrollbar num painel???

Obrigado!

Guilherme_Gomes

JScrollPane ?

Marky.Vasconcelos
JPanel principal  = new JPanel();
JPanel interno = new JPanel();
JScrollPane pane = new JScrollPane();
pane.setViewPortView(interno);
principal.add(pane);
Criado 7 de abril de 2009
Ultima resposta 9 de abr. de 2009
Respostas 11
Participantes 4