Jump to content
Sign in to follow this  
hackum

Não aparece o desenho.

Recommended Posts

hackum

Vejamos o código:

//exApp18.java
//Desenhar um alvo com duas cores aleatórias alternativas

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
import java.util.Random;

public class exApp18 extends JPanel {


Random randomColor = new Random();
private Color cor;
private Graphics g;

 //construtor para gerar as cores
public exApp18()
{
	int red = randomColor.nextInt(256);
	int green = randomColor.nextInt(256);
	int blue = randomColor.nextInt(256);

	Color cor = new Color(red,green,blue);

}


public void superComponent(Graphics g)
{

	super.paintComponent(g);

	 g.setColor(cor);
	 g.fillOval(55, 65, 30, 30);
	 g.fillOval(135, 65, 30, 30);

}






}

//exApp18Test.java


import java.awt.Component;

import javax.swing.JFrame;
public class exApp18Test {


public static void main(String args[])
{
	exApp18 myexApp18 = new exApp18();
	JFrame application = new JFrame();

	application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	application.add(myexApp18);
	application.setSize(230,250);
	application.setVisible(true);


      



}

}

Ao exibir o programa não aparece o alvo (desenho). O que está ocorrendo ?


"Não existe limites para a mente humana... sendo então ilimitado nosso poder de realização." (Victor Zangerolame Fim) "Pessoas inteligentes falam de idéias, pessoas comuns de coisas e pessoas mediocres falam de pessoas."(Platão) "A imaginação é mais importante que o conhecimento."(Albert Einstein)"Ensinar é aprender duas vezes." (Joseph Joubert)

Share this post


Link to post
Share on other sites
Knitter

O atributo cor está a null. No construtor estás a criar uma instância mas a colocar numa variável local do construtor, quer será removida após a sua execução. Variáveis diferentes com nomes iguais :confused:

Share this post


Link to post
Share on other sites
hackum

Desculpe, mas não compreendi.


"Não existe limites para a mente humana... sendo então ilimitado nosso poder de realização." (Victor Zangerolame Fim) "Pessoas inteligentes falam de idéias, pessoas comuns de coisas e pessoas mediocres falam de pessoas."(Platão) "A imaginação é mais importante que o conhecimento."(Albert Einstein)"Ensinar é aprender duas vezes." (Joseph Joubert)

Share this post


Link to post
Share on other sites
Knitter

Declaras-te um atributo privado chamado cor, que depois usas para definir a cor das linhas mas nunca colocaste qualquer valor nessa variável. Estás a colocar a tua "cor" dentro de uma variável dentro do construtor, e essa variável não é a mesma que passas para o método setColor.

public exApp18() {
                int red = randomColor.nextInt(256);
                int green = randomColor.nextInt(256);
                int blue = randomColor.nextInt(256);
               
                //isto é uma variável diferente....
                //Color cor = new Color(red,green,blue);
                //
                cor = new Color(red,green,blue);
               
        }

Share this post


Link to post
Share on other sites
hackum

Após corrigido o problema, ainda assim, não desenha.


"Não existe limites para a mente humana... sendo então ilimitado nosso poder de realização." (Victor Zangerolame Fim) "Pessoas inteligentes falam de idéias, pessoas comuns de coisas e pessoas mediocres falam de pessoas."(Platão) "A imaginação é mais importante que o conhecimento."(Albert Einstein)"Ensinar é aprender duas vezes." (Joseph Joubert)

Share this post


Link to post
Share on other sites
hackum

Knitter, para desenhar e exibir o alvo.


"Não existe limites para a mente humana... sendo então ilimitado nosso poder de realização." (Victor Zangerolame Fim) "Pessoas inteligentes falam de idéias, pessoas comuns de coisas e pessoas mediocres falam de pessoas."(Platão) "A imaginação é mais importante que o conhecimento."(Albert Einstein)"Ensinar é aprender duas vezes." (Joseph Joubert)

Share this post


Link to post
Share on other sites
Knitter

Pois, mas esse método nunca é chamado e se queres desenhar qualquer coisa num componente Swing como o JPanel então tens de usar é o método "paintComponent".

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.