Sou iniciante em java, passei a tarde toda procurando entender algumas coisa e não obtive sucesso na minha empreitada. Vamos a minha dúvida:
Eu tenho duas classes, exemplos utilizados no Deitel.
Classe DrawRainbow
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
public class DrawRainbow extends JPanel{
final Color VIOLET = new Color(128,0,128);
final Color INDIGO = new Color(75,0,130);
private Color colors[] = {
Color.white, Color.white, VIOLET, INDIGO, Color.blue,
Color.green, Color.yellow, Color.orange, Color.red
};
public DrawRainbow(){
setBackground(Color.white);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
int radius = 20;
int centerX = getWidth()/2;
int centerY = getHeight() - 10;
for(int counter = colors.length; counter > 0; counter--){
g.setColor(colors[counter-1]);
g.fillArc(centerX - counter * radius,
centerY - counter * radius,
counter * radius * 2, counter * radius * 2,0,180);
}
}
}
Classe Teste
import javax.swing.JFrame;
import java.awt.Graphics;
public class Teste{
public static void main(String []args){
DrawRainbow rio = new DrawRainbow();
JFrame frame = new JFrame("Desenho de um arco iris");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(rio);
frame.setSize(400,250);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
Minha dúvida é: Onde e como esse desenho está sendo inicializado, logicamente é pelo método paintComponent()… mas não entendi essa de um método paintComponent() ser inicializado se não o chamei. Eu só criei um objeto DrawRainbow() adicionei esse objeto ao frame… e só pelo que me lembre.
DrawRainbow rio = new DrawRainbow();
A classe construtora de DrawRainbow só tem:
setBackground(Color.white);
Minha dúvida: como está sendo inicializado esse método paintComponent?? Toda vez que eu crio um objeto, todos os métodos são inicializados?
Obrigado pela atenção.