tenho uma aplicação com varios icones com imagens e preciso deixar estas imagens
em escala cinza, mas o contorno dos botões estão na cor preta, como resolver?
Alguém tem uma idéia?
segue o que estou fazendo:
publicvoidvalidaDestaqueBotao(){for(Botaob:tela.getBotoes()){// Método de testeStringmetodoTeste=b.getDestacaQuando();ObjectretornoTeste=null;if(metodoTeste==null||(metodoTeste!=null&&metodoTeste.trim().length()==0)){retornoTeste=false;}else{try{// Executa o método de teste que deve obrigatoriamente ter// um booleano como retornoretornoTeste=processaMetodoComRetorno(tela.getService(),metodoTeste);}catch(GenericBusinessExceptione){throwe;}catch(Exceptione){retornoTeste=false;}}// Verifica retornoif(Boolean.class.isInstance(retornoTeste)){booleanteste=(Boolean)retornoTeste;// Recupera o botão da telaJButtonjb=getBotaoNaTela(b);// Caso teste POSITIVOif(teste==true){// Desabilita o botão ImageIconim=(ImageIcon)jb.getIcon();Imagei=im.getImage();jb.setIcon(newBoxIcon(i,jb.getHeight(),jb.getWidth()));}}}
na verdade eu preciso apenas usar a mesma imagem e pintá-la de cinza.
o que voce me passou continua da mesma maneira.
como faço para colocar imagem aqui?
ViniGodoy
Use o botão de attachments. Fica logo embaixo da caixa onde você digita o texto.
Allexb10
Segue a imagem
ViniGodoy
Entendi. Seu problema é que sua imagem tem fundo transparente. O TYPE_BYTE_GRAY não suporta transparência.
Você pode usar um programa para gerar as imagens corretamente.
Ou processar a imagem pixel a pixel. Para isso você deve:
Criar uma nova imagem com o tipo INT_ARGB;
Calcular a média dos canais R, G e B;
Atribuir esse valor médio aos canais R, G e B da imagem em níveis de cinza. Mantenha o valor de A igual nas duas imagens.
está certo?
e como eu faria para inserir em meu projeto? pois retorna um int.
E
entanglement
Pergunta imbecil número um - você quer pegar um botão e desabilitá-lo, é isso? Se for isso, usar setEnabled(false) deve pegar a figura e deixá-la acinzentada, como você quer.
Allexb10
E u não posso desabilitar o botão.
Tenho logo abaixo desta mesma tela, uma aba com perfis,
estes perfis sao de acordo com meus botões (cliente, motorista, despachante, etc).
Se o perfil for por exemplo CLIENTE (estiver marcado no checkbox na aba perfil),
o botão CLIENTE deve ficar cinza informando que esta pessoa é um cliente.
Mas não posso desabilitar o botão.
OK!?
Allexb10
Criei um metodo para deixar a imagem transparente.
GraphicsEnvironmentgraphicsEnvironment=GraphicsEnvironment.getLocalGraphicsEnvironment();GraphicsDevicegraphicsDevice=graphicsEnvironment.getDefaultScreenDevice();GraphicsConfigurationgraphicsConfiguration=graphicsDevice.getDefaultConfiguration();// Se a imagem não tem nenhuma fonte de alfa Transparency.OPAQUEbufferedImage=graphicsConfiguration.createCompatibleImage(img.getWidth(null),img.getHeight(null),Transparency.BITMASK);// Copis imagem para bufferGraphicsgraphics=bufferedImage.createGraphics();// Pinta imagem no buffergraphics.drawImage(img,0,0,null);graphics.dispose();// Converte para cinzaColorSpacecs=ColorSpace.getInstance(ColorSpace.CS_GRAY);ColorConvertOpop=newColorConvertOp(cs,null);bufferedImage=op.filter(bufferedImage,null);