O que está errado com esse código?

Boa tarde pessoal!

Estou fazendo os execcicios do livro da Kathy, quando me deparei com um código que não funcionou.

O objetivo é criar uma tela(GUI) 300 x 300 pixel, e mostra um Button que ao clicar vai gerar uma cor diferente para o circule que encontra-se no centro da Tela.

O Button aparece, mas no centro não aparece a tella.

Gostaria de saber o que está errado com esse código.

[code]import java.awt.;
import javax.swing.
;

public class MyDrawPanel extends JPanel{

public void paintComponente(Graphics g){

	g.fillRect(0,0, this.getWidth(), this.getHeight());
	
	int red = 	(int) ( Math.random() * 255 );
	int green = 	(int) ( Math.random() * 255 );
	int blue = 	(int) ( Math.random() * 255 );
	
	Color random = new Color(red, green, blue);
	
	g.setColor(random);
	
	g.fillOval(10,10,100,100);
}

}
[/code]

[code]import javax.swing.;
import java.awt.
;
import java.awt.event.*;

public class SimpleGui3c implements ActionListener{

JFrame frame;

public static void main(String[] argss){

	SimpleGui3c gui = new SimpleGui3c();
	
	gui.go();
}

public void go(){

	frame = new JFrame();
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	
	JButton btn = new JButton("Mudar Cor");
	
	btn.addActionListener(this);
	
	MyDrawPanel dpanel = new MyDrawPanel();

	frame.getContentPane().add(BorderLayout.SOUTH,btn);
	frame.getContentPane().add(BorderLayout.CENTER,dpanel);

	frame.setSize(300,300);

	frame.setVisible(true);
}
	
public void actionPerformed(ActionEvent event){

	frame.repaint();
}

}[/code]

Valeu pessoal!

Pessoal…

Ajuda ai , please !! :lol:

Caro Glauberthy, fiz uma alteração no código. Não sei se é o objeto da pauta do livro (capítulo), mas dê uma olhada.

[code]import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class SimpleGui3c implements ActionListener {

JFrame frame;

public static void main(String[] argss) {

	SimpleGui3c gui = new SimpleGui3c();

	gui.go();
}

private MyDrawPanel dpanel = null;

public void go() {

	frame = new JFrame();
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	JButton btn = new JButton("Mudar Cor");

	btn.addActionListener(this);
	
	dpanel = new MyDrawPanel();
	
	frame.setBackground(Color.WHITE);
	
	frame.getContentPane().add(BorderLayout.CENTER, dpanel);
	frame.getContentPane().add(BorderLayout.SOUTH, btn);
	
	frame.setSize(300, 300);
	frame.setVisible(true);
}

public void actionPerformed(ActionEvent event) {
	dpanel.paintComponents(frame.getGraphics());

// frame.repaint();
}
}[/code]

Att,
Cláudio Coelho

Cara é o seguinte, vc somente escreveu errado o nome do método paintComponente. O certo é paintComponent.

Olá…

Será que vc não tem que invocar o metodo paintComponente(Graphics g)
da classe MyDrawPanel?

Marck

Fala Tecnoage …

Realmente cara estava errado o methodo paintComponente
o correto é: paintComponent.

Valeu ai todos que postaram.