Tenho uma aplicação swing onde há uma barra de ferramentas (JToollbar), nessa barra de ferramentas há diversos JButton, cada um com seu icone.
Todos os icones sao no formato PNG, porem, agora eu preciso criar uma funcao que Proibe o acesso ao Botao, fiz o seguinte:
//funcao para dar a mensagem de BLOQUEADO
public void setAlertaModuloBloqueado(JButton botao, Modulos modulo) {
for (ActionListener listener : botao.getActionListeners()) {
botao.removeActionListener(listener);
}
ImageIcon iconeAtual = botao.getIcon();
ImageIcon iconeX = new ImageIcon("X.png"));
///AQUI O PROBLEMA, COMO MESCLAR OS DOIS ICONES, SENDO QUE O iconeAtual vai ser o fundo e o X sobreposto
novoIcone = ????????;
botao.setIcon(novoIcone);
botao.addActionListener(new ModuloBloqueadoActionListener(modulo, this));
}
A classe ModuloBloqueadoActionListener simplesmente da a mensagem “O modulo ‘xpto’ esta bloqueado”
Porem, eu gostaria de colocar um X veremelho sobre o icone que se encontra ja setado dentro do botao, tipo, vou gerar o X.png, entao eu deveria carrega-lo em memoria e mesclar com o icone do botao e dar um setIcon no botao para o novo icone gerado em runtime, alguem pode me ajudar a mescar as duas imagens?
Vejam que o meu problema é apenas sobrepor esse X sobre o icone que ja existe no botao.
Não é por nada não, mas se você tem até 50 ícones, é mais fácil você pegar o seu editor gráfico preferido, e criar outros 50 ícones com esse X sobre eles. É meio braçal mas acho que dá menos problemas.
[quote=dyorgio]sobreescreva o paintComponent do seu JButton…
assim :
[code]
public void paintComponent(Graphics g){
super.paintComponent(g);
if (isDisabled){
g.drawImage(seuIconeX,0,0,seuIconeX.width,seuIconeX.height);
}
}
[/code][/quote]
Mas o botao nao vai ficar disabled!!!
Se analisarem o codigo da funcao la em cima, vao ver que removo todo os actionlisteners do botao e depois adiciono 1 que da uma mensagem de modulo bloqueado, portanto. Outra coisa, eu NAO SEI qual o icone que esta no botao, so quero adiconar um X sobre o icone que estiver la.