Ola Pessoal
Bom queria saber se tem como eu fazer o seguinte:
Tenho um Jpanel com uma image que seria um plano de fundo ai queria colocar botoes sob essa imagem só que quando faco isso a imagem desaparece.
Ouvi falar sobre um Jpanel em cima de outro mas nao sei como fazer isso alguem poderia me ajudar?
Ta ai o que tento fazer(ou o que consegui) :
Quando sobrescrever componentes Swing, você deve sobrescrever o método paintComponent, não o paint.
O paint chama três métodos:
paintBorder: Para pintar a borda em torno do painel;
paintComponent: Que pinta o painel em si;
paintChilden: Que pinta tudo o que está sobre o painel.
É importante que a pintura do componente fique no meio, por isso, sobrescreva só o paintComponent.
Nao encontrei como resolver meu problema lá, talvez nao tinha ou nao fui capaz de ver isso :oops:
Aprendi como sobrescrever o paint() Mas foi só
O codigo do meu metodo é esse ai só queria colocar os botoes em cima da imagen…
Obs: w1 e w2 sao imagens que eu crio antes
long x=System.currentTimeMillis();
public void paintChildren(Graphics g){
super.paintChildren(g);
long y=System.currentTimeMillis();
if(y-x<25200){
g.drawImage(w1, 0, 0, this);
Escreve();
}
if((y-x>=25200)&&(y-x<32000)){
g.drawImage(w2,0,0,this);
Escreve();
}
if(y-x>32000){
add(buttons[0]);
add(buttons[1]);
}
Escreve();
}
public void Escreve(){
repaint();
}
Repetindo, você deve sobrescrever o paintComponent, não o paint e nem o paintChildren.
Outra coisa, nunca chame o método repaint() de dentro do método paintComponent ou paint. Portanto, remova aquelas chamadas ao método Escreve(). Chamar repaint força que o paint e o paintComponent sejam executados novamente e seu programa cairá num loop infinito. Sem falar que você pode acabar com uma interface pouco responsiva.
Funciona assim. O componente guarda propriedades que serão usadas durante sua pintura. Se uma dessas propriedades mudar (como o texto de um Label, por exemplo), o label terá que ser repintado. Então, você chama repaint() para avisar “ei, meu texto mudou preciso me desenhar de novo”. O método paint é acionado, para redesenhar o componente e refletir essa mudança.
Note que por isso, chamar o repaint() de dentro do paint() é horrível. Você se redesenhando e diz “mudei! Preciso me redesenhar de novo!”. E aí quando vai se redesenhar novamente, você diz que mudou novamente… até o infinito.