Exibir um alvo com duas cores aleatórios. [AJUDA, SE POSSIVEL]

10 respostas
H

Olá,

Estou tentando fazer um alvo com duas cores aleatórias alternativas.
Poderiam me dá ideias de como fazer ?

10 Respostas

V

Existem várias maneiras de se fazer isso. O que exatamente você está tentando fazer?
Você pode usar o gerador aleatório java.util.Random para gerar números e criar novas instâncias de Color, passando a intensidade de vermelho, verde e azul que deseja.

H

Olá visola,

Exatamente isso, vejamos o código e veja o que eu posso fazer:

//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();
	
	Color colorA = Color.BLACK;
	Color colorB = Color.YELLOW;
	Color colorC = Color.blue;
	
	
	public exApp18()
	{
		int colorRandomNe = colorA,colorB,colorC = 1 + randomColor.nextInt(2);

	}
	
	public void superComponent(Graphics g)
	{
		
		super.paintComponent(g);
		
		 g.setColor(colorRandom);
		 g.fillOval(200, 100, 50, 100);
		
	}
	

	
	

}
V

Não testei seu código, mas acho que ele não compila.
O que eu pensei seria o seguinte:

Random random = new Random();

pulbic Color getRandomColor() {
   int red = random.nextInt(256);
   int blue = random.nextInt(256);
   int green = random.nextInt(256);
   return new Color(red, green, blue);
}
H

visola,

Não consigui compreender o seu código.
É a classe em si ou um construtor ou uma variável local ?

Abraços!

M

O código dele gera uma cor “aleatoria” e retorna.

Para voce usar voce deve fazer algo como:

Color cor1 = getRandomColor();
Color cor2 = getRandomColor();
H
//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(200, 100, 50, 100);
		
	}
	


	
	

}
//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 executar o código, não aparece o desenho.
O que está ocorrendo ?

V

Você está com um problema de escopo. Na linha 23 você faz:

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

Quando na verdade deveria ser apenas:

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

Se não fizer assim, na linha 34:

g.setColor(cor);

“cor” será null
Talvez por isso ele não esteja desenhando nada.

H

Olá visola,

ainda não desenhou nada.

V

Desculpa, não tinha visto mas seu método “superComponent” deve se chamar paint para sobrepor o método da classe JPanel, só assim ele vai desenhar alguma coisa.

H

Estou a tempos tendo problema com esse programa, pois, nao exibe simplesmente nada!
Estou seguindo as dicas postadas logo acima, e nada de resolver. Por favor, alguem dispoem ajuda ? Mostrar codigos e colocar seus seguintes significados, para que assim eu possa entender.

Criado 4 de maio de 2011
Ultima resposta 5 de mai. de 2011
Respostas 10
Participantes 3