Unterschiedliche Farben erzeugen

downset04

Erfahrenes Mitglied
Hallo
Ich möchte Random Farben erzeugen nur das ->
Code:
rval = (int)Math.floor(Math.random() * 256);
gval = (int)Math.floor(Math.random() * 256);
bval = (int)Math.floor(Math.random() * 256);		
Color c = new Color(rval,gval,bval);
erzeugt ca 80% Rot? wie kann ich das ändern? dass auch leuchtende Farben zb Blau usw mal rauskommt? die Farbenvielfalt ist sehr schlecht!
 
benötigts du wirklich die 24 bit Farben, die du damit darstellen könntest, oder reichen dir auch z.B. 256 farben? Dann könntest du z.B. einfach (int) (Math.floor(Math.random() * 8) * 32) nehmen, dadurch erhälts du nicht soviele Farbabstufungen, und solltest auch nicht sooft rot erhalten.
 
komisch auch mit deiner Funktion schauts nicht viel anderst aus? sind ziemlich dunkle Farben so dunkelrot schwarz ganz wenig dunkelblau aber dunkelrot ca 70%? gibts doch nicht dass man da nicht unterschiedliche Farben kriegt?
 
Hm also bei mir funktioniert das sehr gut ..
Code:
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import java.awt.event.*;
import java.awt.*;


public class RandomColor extends JFrame implements ActionListener {

	private JPanel jContentPane = null;
	private JButton jButton = null;
	public static void main(String[] args){
		RandomColor myrc = new RandomColor();
	}
	
	
	/**
	 * This is the default constructor
	 */
	public RandomColor() {
		super();
		initialize();
		this.setVisible(true);
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(300, 200);
		this.setContentPane(getJContentPane());
		this.setTitle("JFrame");
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jContentPane = new JPanel();
			jContentPane.setLayout(new BorderLayout());
			jContentPane.setBackground(new java.awt.Color(238,238,85));
			jContentPane.add(getJButton(), java.awt.BorderLayout.NORTH);
		}
		return jContentPane;
	}

	/**
	 * This method initializes jButton	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton() {
		if (jButton == null) {
			jButton = new JButton();
			jButton.setText("Randomize");
			jButton.addActionListener(this);
		}
		return jButton;
	}


	public void actionPerformed(ActionEvent e) {
		int rval = (int)Math.floor(Math.random() * 256);
		int gval = (int)Math.floor(Math.random() * 256);
		int bval = (int)Math.floor(Math.random() * 256);		
		Color c = new Color(rval,gval,bval);
		this.jContentPane.setBackground(c);
		
	}

}
 
Hallo - Ich erzeuge schnell hintereinander in einer for Schleife die Zahlen? ich glaub das hängt damit zusammen dass der Zeitabstand zu gering ist?
 
Hi,

Code:
Random rand = new Random();
        for(int i = 0; i < 15; i++) {
            System.out.println(rand.nextInt(256));
        }

Ergebnis:
207
52
43
136
55
253
78
87
121
235
32
123
14
227
5


zufaellig genug? :D
 
Zurück