paintChildren

Ola galera,

Para que serve o paintChildren?!, teria como dar exemplos?!

flw,

Serve para chamar o paint de todos os componentes que estão sobre um painel.

O ciclo de pintura de um painel é:
Paint, que chama:

  • paintComponent
  • paintChildren
  • paintBorder

Por isso também, deve-se sobrescrever o método paintComponent quando está trabalhando com personalização da pintura, e não os outros dois.

o paintChildren detectaria qual componente da tela seria pintado, seria isso?!

Não detecta nada.

Todo painel guarda uma lista de todos os componentes que foram colocados sobre ele (você chama o método add, para colocar um componente num painel, não chama?).
Quando o paintChildren do painel é chamado, o painel simplesmente faz:

public void paintChildren(Graphics g) { for (Component c : getComponents()) { c.paint(g); } }

Ele faz isso por padrão, entendi… e pq java permite que a gente use esse método?!.. se o default seria ele chamar todos os componentes?! O que pode ser feito com o paintChildren?!

Você só sobrescreve os métodos paint se quiser criar seus próprios componentes personalizados.

Mas é extremamente raro sobrescrever paintChildren. O normal é só o paintComponent mesmo.

hummmmm, então, vinni estou tentando obter informações para resolver aquele problema de detecção de imagem na tela, lembra, que vc me falou do if que ele escolheria somente uma imagem, estou tentando obter uma outra solução para detectar imagens na tela, ja pensei em ImageIcon que seria mais simples, pois tenho mais de 6.000 imagens em bmp, e ImageIcon so consegue ler jpg, gif e png, se vc tiver alguma idéia por ter mais experiencia do que eu, sou todo ouvidos…

O meio recomendado é você converter suas imagens de BMP para o formato desejado (por exemplo, PNG) usando algum programa como o ImageMagick. Pegue as suas 6000 imagens, copie-as para um diretório, pegue a linha de comando (Command Prompt no Windows, ou uma sessão de terminal no Linux/Unix), e execute o comando:

(Windows)

(Linux/Unix)

for i in *.bmp do convert $i `basename $i`.png done