Criação de botões com forma "irregular"

12 respostas
G

Boa tarde!
Estou fazendo um trabalho para meu curso utilizando swings. A proposta é fazer um sistema de gerenciamento de aeroportos. Utilizei os recursos básicos (jButton, jLabel, jComboBox, enfim, os mais simples), e como “inovação” no projeto, pensei em fazer botões com formas irregulares (círculos, polígonos não convexos), mas não sei como fazê-los! Só cheguei a utilizar uma imagem como botão, mas usando um círculo, a “borda” ainda é clicável. Quero que apenas a área do círculo seja ativa, e não os cantos, como se fosse um quadrado. Meu professor comentou algo sobre um método que permite alterar a forma do botão, mas não sei como implementá-lo.

Obrigado desde já! :wink:

12 Respostas

TerraSkilll

Para mudar o desenho de um componente, você pode estendê-lo e sobrescrever o método paintComponent, e desenhá-lo da forma que você quiser. Apenas atente para o fato de que, quanto mais complexa a forma do componente, mais trabalho você terá para fazê-lo e mais custosa (em termos de processamento) é para desenhá-la (em tempo de execução). Para um ou outro botão, esse custo não é tão alto, mas é melhor só fazer quando realmente necessário.

Exemplo:
Botão redondo: http://www.gobiernodecanarias.org/educacion/3/Usrn/fisicayquimica/applets/mas_applets/members.es.tripod.de/froufe/parte5/cap5-1.html

Abraço.

InicianteJavaHenriqu

Java 2D é a resposta para isto :smiley:

:thumbup:

G

Opa, valeu TerraSkilll, era exatamente isso que eu precisava!

InicianteJavaHenrique, me ajudou também, mas não posso usar Java2D ):

InicianteJavaHenriqu

Se vc não pode usar Java 2D não poderá fazer isto e nem usar o exemplo que o TerraSkilll passou, adivinha por que :?:

:thumbup:

G

Na verdade, poder eu posso, mas não é acoselhável usar ele na forma “pura”… Talvez eu não esteja conseguindo me fazer entender, pois ainda não entendo muito de java, o que pode dificultar a comunicação u.u

TerraSkilll

gkgk

Por que não é aconselhável, se é a forma mais simples de se redesenhar qualquer componente em Swing?

Abraço.

G

E há algum outro modo?
Por acaso, alguém teria uma boa apostila ensinando a “desenhar”? Um curso, apostila, qualquer ajuda serve!

guilherme.dio

Use LAF(Look and Feel)

G

Look and Feel não se aplica a esse caso, eu acho.

TerraSkilll

gkgk:
E há algum outro modo?
Por acaso, alguém teria uma boa apostila ensinando a “desenhar”? Um curso, apostila, qualquer ajuda serve!

Não sei dizer se há outro modo. No quê o modo proposto não te atende? Você não disse que era isso que queria fazer, quando mostrei o link explicando como fazer um botão redondo? Agora é só estudar Java2D e pode fazê-lo no formato que precisar.

Fiquei curioso: como o LAF pode mudar o formato do botão? Se eu quiser fazer um botão com formato de “L”, ou em hexágono, como faria alterando o LAF? O LAF não altera só o estilo (bordas, cores) dos componentes?

Abraços.

G

TerraSkilll, sim, é exatamente isso que preciso fazer, agora só preciso descobrir como mudar a forma desse círculo para uma meia lua u.u
De qualquer modo, obrigado pela ajuda!

InicianteJavaHenriqu

:arrow: http://www.guj.com.br/java/266602-fxg-to-java2d-converter-alguem-conhece

Criado 23 de abril de 2012
Ultima resposta 24 de abr. de 2012
Respostas 12
Participantes 4