Problem mit repaint()

gtkingz

Mitglied
Mahlzeit Community.
Habe folgendes Problem und zwar funktioniert bei mir der Gradient oder das repaint(); nicht.
Hab schon vieles versucht aber ich lauf ständig vor die Wand.

Java:
public class GUI 
{
	JFrame frame;
	JButton button;
	
	public static void main(String[] args)
	{
		GUI gui = new GUI();
		gui.create();
	}
	public void create()
	{
		// Frame
		frame = new JFrame();
		frame.setVisible(true);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setResizable(false);
		frame.setSize(500, 500);
		
		// Button
		button = new JButton("Wechsel Farbe vom Objekt");
		button.addActionListener(new ColorListener());
		
		ZeichenPanel zeichPan = new ZeichenPanel();
		
		frame.getContentPane().add(BorderLayout.SOUTH, button);
		frame.getContentPane().add(BorderLayout.CENTER, zeichPan);
		
	}
	class ColorListener implements ActionListener
	{
		@Override
		public void actionPerformed(ActionEvent event)
		{
			frame.repaint();
			System.out.println("Gedrückt!");
		}
	}
}

Und hier der Zeichen Panel
Java:
public class ZeichenPanel extends JPanel
{
	public void paintComponent(Graphics g)
	{
		Graphics2D g2d = (Graphics2D) g;
		super.paintComponent(g2d);
		// Farben Verarbeitung
		int rot = (int) Math.random() * 255;
		int gruen = (int) Math.random() * 255;
		int blau = (int) Math.random() * 255;
		Color FarbAnfang = new Color(rot, gruen, blau);
		
		rot = (int) Math.random() * 255;
		gruen = (int) Math.random() * 255;
		blau = (int) Math.random() * 255;
		Color EndFarbe = new Color(rot, gruen, blau);
		
		
		// Zeichnen
		GradientPaint gradient = new GradientPaint(70, 70, FarbAnfang, 150, 150, EndFarbe);
		g2d.setPaint(gradient);
		g2d.fillOval(70, 70, 100, 100);
	}
}
 
Das Problem liegt daran wie du die RGB-Werte erzeugst:
Code:
(int) Math.random() * 255
Wird so geklamment:
Code:
((int) Math.random()) * 255
und da Math.random() immer einen Wert kleiner 1 liefert, könntest du auch gleich
Code:
0*255
schreiben.
Entweder du verwendest [JAPI]Random[/JAPI] oder du setzt noch Klammer:
Code:
(int) (Math.random() * 255)
 
Oh man jetzt merke ich was ich da fabriziert habe.

Java:
int rot = (int) ((Math.random() * 255));
int gruen = (int) ((Math.random() * 255));
int blau = (int) ((Math.random() * 255));
Color FarbAnfang = new Color(rot, gruen, blau);

So ist es dann richtig.. Und funktioniert auch. Danke 🙂
 
Zuletzt bearbeitet:

Zurück
Oben