paintChildren

7 respostas
F

Ola galera,

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

flw,

7 Respostas

ViniGodoy

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.

F

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

ViniGodoy

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); } }

F

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?!

ViniGodoy

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.

F

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…

E

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

Criado 30 de março de 2012
Ultima resposta 30 de mar. de 2012
Respostas 7
Participantes 3