Bom pessoal, é uma dúvida meio boba, mas não consegui achar resposta ainda. :roll:
Eu crio um botão, deixo ele sem borda, com fundo transparente e insiro uma imagem.
Até ai beleza, mas no primeiro clique que esse botão recebe, aparecem bordas e um fundo, que indicam que ele foi clicado.
Só por curiosidade: você precisa realmente deixar o fundo transparente e sem borda? A imagem que você usa é a imagem de um botão?
J
Javax2011
Sim, é uma imagem de um botão, mas com as bordas arredondadas.
Não haveria necessidade de retirar as bordas e a cor de fundo? :?
M
marcobiscaro2112
É que talvez usar imagens para seus botões não seja a melhor maneira de se fazer.
Imagine ter que criar uma imagem diferente para cada botão que for necessário… Além disso, se você precisar trocar o texto do botão, terá que refazer a imagem. Ou pior, se precisar trocar o modelo dos botões terá que refazer todas as imagens de todos os botões!
Além disso, é possível que os botões fiquem inconsistentes com outros controles (exemplo: botões arredondados e barras de rolagem retangulares).
Em Java há suporte para LookAndFeel (a aparência da aplicação). Quando se usa essa funcionalidade, basta trocar o LookAndFeel do programa e todos os controles (botões, radios, checkboxes, caixas de texto, etc.) ficaram consistentes.
LookAndFeel, se não me engano, altera toda a aplicação.
No meu caso, estou fazendo um sistema bem visual, então realmente necessito de fugir ao padrões.
Mas agradeço pelos links, em um outro trabalho vou usar LookAndFeel.
E voltando, eu realmente precisava usar uma imagem no botão.
A não ser que eu adicionasse essa imagem numa JLabel, mas como eu deveria configurar o MouseListener nesse caso?
M
marcobiscaro2112
Sim, o LookAndFeel altera toda a aplicação.
O problema de usar um JLabel é que ele não recebe eventos como Enter ou o pressionamento da barra de espaço para ativação do evento.
Uma solução possível (não sei se é a mais fácil, mas é a que me vem na mente) é escrever uma classe filha de BasicButtonUI (ou MetalButtonUI) com os métodos paintButtonPressed e paintFocus vazios.
Aí, você faria o seguinte no(s) botão(ões) que você quer desenhar de forma especial:
meuBotao.setUI(newMinhaButtonUI());
J
Javax2011
É uma possibilidade!
Vou dar uma pesquisada nesse BasicButtonUI… valeu!