Curvas, setas e componentes com formas não quadradas no Swing?

3 respostas
N

Existem componentes prontos para isso como os que existem na paleta do Netbeans?

Gostaria de utilizar componentes em uma aplicação para edição de autômatos em que os usuários pudessem editar os componentes, por exemplo, clicando em um ponto chave da curva e arrastando ele para remodelar a curva e fazendo com que a ponta de uma seta fique presa a um componente circular.

Se não me engano no Visual Studio tem algo assim.

3 Respostas

ViniGodoy

Não existe nem no java, e que eu saiba, nem no visual.

Um editor assim existe para o programador nas duas linguagens. Mas disponibilizar algo similar para o usuário é outra história.

Para cumprir o que você quer, dê uma olhada no Java 2D:
http://www.pontov.com.br/site/index.php/java/48-java2d

N

Obrigado, vou dar uma olhada nesses artigos sobre Java 2D.

Mas não tem como criar uma linha que reconheça, através de eventos, quando eu cliquei nela, e em que ponto, como em um componente Swing? Eu até pensei em implementar, e provavelmente vou ter que fazer isso no braço mas seria um trabalho muito extenso e não teria as vantagens de um componente já implementado e testado.

Quero criar diagramas que possam ser alterados pelo usuário. A parte de edição eu mesmo posso adicionar, mas pelo menos para o básico que é o desenho das formas e eventos não há nada disponível?

O Astah, uma ferramenta de UML feita em Java permite coisas do gênero:

Também é possível fazer janelas com formas em Java. Então pode ser possível fazer com outros componentes.

rmendes08

Essas janelas com formas diferentes são feitas exatamente com o que o Vini sugeriu. A API Java2D nada mais é do que uma biblioteca para manipulação de primitivas geométricas: linhas, retângulos, elipses e polígonos, etc. O que essas janelas fazem é estender componentes prontos e sobrescrever os métodos apropriados que desenham a janela, no momento apropriado do seu ciclo de vida, ou seja, pura orientação a objetos. Se eu não me engano, a API também tem utilitários para saber se um ponto está dentro ou fora de um polígono, se está sobre a linha, etc. Para saber se o componente foi clicado, por exemplo, basta capturar o evento do mouse, obter a posição do clique no objeto de evento e utilizar a API para fazer um teste.

Criado 8 de julho de 2011
Ultima resposta 9 de jul. de 2011
Respostas 3
Participantes 3