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

10 respostas
hackum

Olá,

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

10 Respostas

visola

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.

hackum

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

	
	

}
visola

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

visola,

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

Abraços!

Marky.Vasconcelos

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

Para voce usar voce deve fazer algo como:

Color cor1 = getRandomColor();
Color cor2 = getRandomColor();
hackum
//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 ?

visola

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.

hackum

Olá visola,

ainda não desenhou nada.

visola

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.

hackum

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