JavaFx Zufallsfarbe beim Button-Klick

Diskutiere JavaFx Zufallsfarbe beim Button-Klick im AWT, Swing, JavaFX & SWT Bereich.
S

Sandro95

guten tag leute ,
ich versuche seit gestern eine Zufallsfarbe per Button Klick zu implementieren.
Habe mich schlau gemacht , dennoch klappt es bei mir nicht und ich weiß nicht woran das liehgt .
Andere aus dem Netz haben das ebenso so gelöst.Vlt kann ja einer kurz drüber schauen und mir einen Tipp geben

viele dank leute!
 

Anhänge

VfL_Freak

VfL_Freak

Moin,

bitte poste Deinen Code mit Code-Tags (siehe meine Signatur)!
Nicht jeder wird 'irgendeine' ZIP-Datei öffnen wollen, außerdem ist leserlicher und besser zitierbar!

Danke und Gruß
Klaus
 
S

Sandro95

meinste so ?



Java:
import java.util.Random;
import java.util.Scanner;

import com.sun.prism.paint.Color;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;

import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class Fenster extends Application {
   
    public  void start(Stage primstage) {
       
        //Fenster art
        BorderPane border = new BorderPane();
       
        //Hbox für den Button
        HBox box = new HBox();
        //die Hbox nach unten setzen
        border.setBottom(box);
        //die HBox unten mittig setzen
        box.setAlignment(Pos.CENTER);
        // abstand zu den rändern
        box.setPadding(new Insets(10));
       
       
       
        Rectangle viereck = new Rectangle();
       
       
        viereck.setX(125);
        viereck.setY(100);
        viereck.setWidth(150);
        viereck.setHeight(150);
       
        Button wechsel = new Button("Farbenwechsel");
       
        wechsel.setPadding(new Insets(10));
       
       


        //das Viereck an der Pane hinzufügen
        border.getChildren().add(viereck);
        //den Button an der Hbox hinzufügen
        box.getChildren().add(wechsel);
       
        Scene szene = new Scene(border,400,400);
        primstage.setScene(szene);
        primstage.show();
       
        wechsel.setOnAction((ActionEvent e)-> {
            float farbe1 = (float) Math.random();
            float farb2  = (float) Math.random();
            float farbe3  = (float) Math.random();
           
            Random rnd = new Random();
         Color color = new Color(rnd.nextInt(),rnd.nextInt(),rnd.nextInt());
           
           
           
        });
       
       

       
       
       
       
    }

    public static void main(String[] args) {
        launch();
    }

   
}
 
Zuletzt bearbeitet von einem Moderator:
N

NoName2

Hab es mir angesehen, die setOnAction ist noch nicht richtig, hier mal mit 27 unterschiedlichen Farben:
Java:
	private static List<int[]> rgbs = new ArrayList<>();

	private static void iniRnd(int i, int[] rgb) {
		if (i == 3) {
			rgbs.add(rgb.clone());
			return;
		}
		for (int j = 0; j < 3; j++) {
			if (j == 0) {
				rgb[i] = 0;
			} else {
				rgb[i] = (j * 128) - 1;
			}
			iniRnd(i + 1, rgb);
		}
	}

	public static Color getRnd() {
		if (rgbs.isEmpty()) {
			iniRnd(0, new int[3]);
		}
		Collections.shuffle(rgbs);
		int[] a = rgbs.get(0);
		return new Color(a[0], a[1], a[2]);
	}

	public static void main(String[] args) {
		System.out.println(getRnd().toString());
		System.out.println(rgbs.size());
	}
 
S

Sandro95

Hab es mir angesehen, die setOnAction ist noch nicht richtig, hier mal mit 27 unterschiedlichen Farben:
Java:
    private static List<int[]> rgbs = new ArrayList<>();

    private static void iniRnd(int i, int[] rgb) {
        if (i == 3) {
            rgbs.add(rgb.clone());
            return;
        }
        for (int j = 0; j < 3; j++) {
            if (j == 0) {
                rgb[i] = 0;
            } else {
                rgb[i] = (j * 128) - 1;
            }
            iniRnd(i + 1, rgb);
        }
    }

    public static Color getRnd() {
        if (rgbs.isEmpty()) {
            iniRnd(0, new int[3]);
        }
        Collections.shuffle(rgbs);
        int[] a = rgbs.get(0);
        return new Color(a[0], a[1], a[2]);
    }

    public static void main(String[] args) {
        System.out.println(getRnd().toString());
        System.out.println(rgbs.size());
    }


geht das ganze nicht einfacher ?🧐
 
MoxxiManagarm

MoxxiManagarm

das funktioniert so iwie nicht , die Methode ist undefiniert steht dort dann
Ist ja auch klar, du benutzt nicht JavaFX Color (blame myself). Ich kann aber die docs zu com.sun.prism.paint.Color nicht finden spontan, hast du docs dazu?



Edit:
Ah habe zumindest etwas SourceCode gefunden.

Java:
new Color(Math.random(), Math.random(), Math.random(), 1f)
Siehe https://jar-download.com/artifacts/...11/source-code/com/sun/prism/paint/Color.java

Das sollte passen. Der letzte Wert ist Transparenz. Wenn der auch zufällig sein soll musst du den noch ändern.
 
Zuletzt bearbeitet:
S

Sandro95

Ist ja auch klar, du benutzt nicht JavaFX Color (blame myself). Ich kann aber die docs zu com.sun.prism.paint.Color nicht finden spontan, hast du docs dazu?



Edit:
Ah habe zumindest etwas SourceCode gefunden.

Java:
new Color(Math.random(), Math.random(), Math.random(), 1f)
Siehe https://jar-download.com/artifacts/...11/source-code/com/sun/prism/paint/Color.java

Das sollte passen. Der letzte Wert ist Transparenz. Wenn der auch zufällig sein soll musst du den noch ändern.
Funktioniert ebenfalls nicht, wieder undefiniert ..
 
S

Sandro95

okay jetzt gehts , dennoch wird die Farbe beim klicken nicht geändert
 
N

NoName2

Wie würde das dann aussehen ?
Naja, all-in-one straightforward so:
Java:
	public static Color getRnd() {
		Random r = new Random();
		int[] rgb = new int[3];
		for (int i = 0; i < rgb.length; i++) {
			rgb[i] = r.nextInt(3) * 128 - 1;
			if (rgb[i] < 0) {
				rgb[i] = 0;
			}
		}
		return new Color(rgb[0], rgb[1], rgb[2]);
	}
 
mrBrown

mrBrown

Naja, dein Code macht ja auch nichts mit der Color...

(und bitte verzichte auf alles was aus com.sun.* kommt, die Dinge direkt aus JavaFX sind schon passend :) )
 
mrBrown

mrBrown

N

NoName2

Wie gesagt, mögliche Farben sollten im Vorhinein festgelegt werden.
 
Thema: 

JavaFx Zufallsfarbe beim Button-Klick

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben