O que está errado com esse código?

5 respostas
G

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.

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

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

Valeu pessoal!

5 Respostas

G

Pessoal…

Ajuda ai , please !! :lol:

C

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.

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

Att,
Cláudio Coelho

T

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

Marck

Olá…

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

Marck

G

Fala Tecnoage …

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

Valeu ai todos que postaram.

Criado 14 de março de 2007
Ultima resposta 15 de mar. de 2007
Respostas 5
Participantes 4