# Farbverlauf mit Java



## sooks (9. Apr 2005)

Hi Leute!

Hab da folgendes Problem: Ich will mit 2 ComboBoxen die Start- und Endfarbe auswählen, und dazwischen einen fliessenden Farbübergang machen. Hab schon herausgefunden, dass das mit GradientPaint gehen müsste, ich bekomme es leider trotzdem nicht hin. Kann mir wer sagen was ich da falsch mache?

Hier der Code:


```
import java.awt.*;
import java.awt.Color;
import java.awt.event.*;
import javax.swing.*;

public class Farbverlauf	extends JFrame
							implements ActionListener
{ String[] farben = {"red", "green", "blue"};

  JComboBox cb1 = new JComboBox(farben);
  JComboBox cb2 = new JComboBox(farben);

  JPanel oben = new JPanel(new GridLayout(1, 2));
  JPanel unten = new JPanel();

  Color wert1 = Color.red;
  Color wert2 = Color.blue;

  Graphics g;

  public Farbverlauf()
  { oben.add(cb1);
    oben.add(cb2);
    cb1.addActionListener(this);
    cb2.addActionListener(this);
  	getContentPane().add(oben, BorderLayout.NORTH);
  	getContentPane().add(unten, BorderLayout.CENTER);
  }

  public void actionPerformed(ActionEvent e)
  { if(e.getSource()==cb1 || e.getSource()==cb2)
    { repaint();
	  switch(cb1.getSelectedIndex())
      { case 0: wert1 = Color.red;
        break;
	    case 1: wert1 = Color.green;
	    break;
        case 2: wert1 = Color.blue;
        break;
	  }
      switch(cb2.getSelectedIndex())
	  { case 0: wert2 = Color.red;
	    break;
	    case 1: wert2 = Color.green;
	    break;
	    case 2: wert2 = Color.blue;
	    break;
	  }
    }
  }

  public void paint(Graphics g)
  { Graphics2D g2d = (Graphics2D)g;

    GradientPaint gp = new GradientPaint( 0f, 55f, wert1, 800f, 55f, wert2);
    g2d.setPaint(gp);

    g2d.fillRect(0,55, 800, 600);
  }


  public static void main(String[] args)
  { JFrame start = new Farbverlauf();
    start.addWindowListener(new WindowAdapter()
    { public void windowClosing(WindowEvent e)
      { System.exit(0);
      }
    });
    start.setTitle("Farbverlauf");
    start.setSize(800, 600);
    start.setVisible(true);
  }
}
```

mfg sooks


----------



## Campino (9. Apr 2005)

du musst:
1. paint nicht auskommentieren 
2. am ende der Funktion actionPerformed reapint(); aufrufen, damit neu gezeichnet wird.


----------



## Illuvatar (9. Apr 2005)

GradientPaint??? So was gibts? Mist ich hab so Zeug immer mühsam selber gemacht :?


----------



## Roar (10. Apr 2005)

Illuvatar hat gesagt.:
			
		

> GradientPaint??? So was gibts? Mist ich hab so Zeug immer mühsam selber gemacht :?


hahahahahhahahahahahh  :bae:


----------



## sooks (10. Apr 2005)

Campino hat gesagt.:
			
		

> du musst:
> 1. paint nicht auskommentieren
> 2. am ende der Funktion actionPerformed reapint(); aufrufen, damit neu gezeichnet wird.




@1. is klar, hab ich beim Programm ausführen eh nicht ghabt, nur im die wahrscheinliche fehlerhafte Methode zu kennzeichnen.
@2. wenn ich die Methode repaint aufrufe, hängt er glaub ich in einer Endlosschleife fest.

entschuldigt die Fehler(falls welche vorhanden sind  ) , war bei der Erstellung des Posts nicht mehr ganz nüchtern ...

mfg sooks


----------



## sooks (10. Apr 2005)

So, einen Farbverlauf bekomme ich schon mal zusammen (wenn ich rot und blau als Startwerte eintrage  )

2 Probleme:

1. Ich sehe die Comboboxen beim ausführen des Programms nicht... ???:L 
2. Wenn ich andere Farben auswähle, wird der Farbverlauf IMMER einfärbig blau  :bahnhof: 

Den Code hab ich mal aktualisiert.

Hoffe ihr könnt mir helfen...

mfg sooks


----------



## Akimor (10. Apr 2005)

zu 1. Bei mir sind sie auch erstmal nicht sichtbar, aber wenn man auf die Flaeche davon draufklickt werden sie sichtbar.
Allerdings kann man keine Farben auswaehlen...

zu 2. Das klappt bei mir problemlos


----------



## Illuvatar (10. Apr 2005)

zu 1.: Ruf am Ende von paint mal super.paint (g) auf, da werden die nämlich gezeichnet.


----------



## sooks (11. Apr 2005)

Illuvatar hat gesagt.:
			
		

> zu 1.: Ruf am Ende von paint mal super.paint (g) auf, da werden die nämlich gezeichnet.



Ja, die ComboBoxen werden dann gezeichnet, leider ist dann der Farbverlauf weg  :wink:


----------



## sooks (11. Apr 2005)

Jetzt gibts nur mehr das Problem, dass die ComboBoxen beim Starten nicht sichtbar sind(erst beim draufklicken). Farbverlauf funktioniert problemlos. Den Code hab ich editiert.

mfg sooks


----------



## Akimor (11. Apr 2005)

Mach am Anfang von paint mal super.paint(g) rein.
Bei mir klappts dann!


----------



## sooks (11. Apr 2005)

Danke Leute, mit dem super.paint(g); funktioniert das dann wirklich! Super Forum, danke nochmal!  :applaus: 

mfg sooks


----------



## Akimor (13. Apr 2005)

Bitte hack den Topic noch ab dass man weiss dass das Problem bereits geloest wurde...


----------

