# Farbregler - Werte als Zahl ausgeben - Color



## lordsaibo (19. Feb 2007)

hallo
ich habe ein kleines programm begonnen mit dem farben auf einem kleinen farbfeld eingestellt werden. nun möchte ich den eingestellten farbwert jedes reglers als zahl anzeigen lassen. 

ich habe in der java docu die methode getColor gefunden mit der man das glaube ich machen kann allerdings kann ich sie irgendwie nicht anwenden. man benötigt irgendwie einen String?

kann mir jemand weiterhelfen?

hier der code:
	
	
	
	





```
import java.awt.*;

import java.awt.event.*;

public class Regler extends Frame implements AdjustmentListener
{
  static Scrollbar s1 = new Scrollbar(Scrollbar.HORIZONTAL);
  static Scrollbar s2 = new Scrollbar(Scrollbar.HORIZONTAL);
  static Scrollbar s3 = new Scrollbar(Scrollbar.HORIZONTAL);
  static Regler f = new Regler();
  static Color farbe = new Color(255, 255, 255, 100);
  static Panel farbfeld = new Panel();

  
  public static void main (String [] args)
  {
     f.setLayout(null);
     f.setBounds(0,0,800,600);
     f.setBackground(Color.BLACK);
     f.setTitle("Farben aendern");
     f.addWindowListener(new Schliesser());
     
     farbfeld.setBounds(450,50,300,500);
     farbfeld.setBackground(farbe);
     f.add(farbfeld);
     


     // Regler1: Rot RGB
     s1.setBounds(100,50,250,20);              //(Start x, Start y, Länge x, Länge y)
     s1.addAdjustmentListener(f);
     s1.setName("rot");
     s1.setMinimum(0);
     s1.setMaximum(255);
     f.add(s1);
     
     Label l1 = new Label("Rot");
     l1.setBounds(20,50,70, 20);
     l1.setBackground(Color.WHITE);
     f.add(l1);
     
     
     /// habe ich neu angelegt um die zahlenausgabe zu machen!!!
     Label l11 = new Label();
     l11.setBounds(360,50,70, 20);
     l11.setBackground(Color.WHITE);
     f.add(l11);

      
     // Regler2: Gruen RGB
     s2.setBounds(100,100,250,20);
     s2.addAdjustmentListener(f);
     s2.setName("gruen");
     s2.setMinimum(0);
     s2.setMaximum(255);
     f.add(s2);
     
     Label l2 = new Label("Gruen");
     l2.setBounds(20,100, 70, 20);
     l2.setBackground(Color.WHITE);
     f.add(l2);
      
     // Regler3: Blau RGB
     s3.setBounds(100,150,250,20);
     s3.addAdjustmentListener(f);
     s3.setName("blau");
     s3.setMinimum(0);
     s3.setMaximum(255);
     f.add(s3);
     
     Label l3 = new Label("Blau");
     l3.setBounds(20,150, 70, 20);
     l3.setBackground(Color.WHITE);
     f.add(l3);
     
     
     f.setVisible(true);
  }
  public void adjustmentValueChanged(AdjustmentEvent e)
  {
    int rot;
    int gruen;
    int blau;
    String rot_string;


    
    rot = s1.getValue();
    gruen = s2.getValue();
    blau = s3.getValue();


    rot_string = ""+rot;
      
    farbfeld.setBackground(new Color(rot, gruen, blau));

  }
  

  

  
}
```


----------



## André Uhres (19. Feb 2007)

```
package basics;
/*
 * Regler.java
 */
import java.awt.*;
import java.awt.event.*;
public class Regler extends Frame implements AdjustmentListener {
    private Scrollbar s1 = new Scrollbar(Scrollbar.HORIZONTAL);
    private Scrollbar s2 = new Scrollbar(Scrollbar.HORIZONTAL);
    private Scrollbar s3 = new Scrollbar(Scrollbar.HORIZONTAL);
    private Color farbe = new Color(255, 255, 255, 100);
    private Panel farbfeld = new Panel();
    private Label l11;
    public Regler(){
        setLayout(null);
        setBounds(0,0,800,600);
        setBackground(Color.BLACK);
        setTitle("Farben aendern");
        addWindowListener(new WindowAdapter() {
            public void windowClosing(final WindowEvent e) {
                System.exit(0);
            }
        });
        farbfeld.setBounds(450,50,300,500);
        farbfeld.setBackground(farbe);
        add(farbfeld);
        // Regler1: Rot RGB
        s1.setBounds(100,50,250,20);              //(Start x, Start y, Länge x, Länge y)
        s1.addAdjustmentListener(this);
        s1.setName("rot");
        s1.setMinimum(0);
        s1.setMaximum(265);
        add(s1);
        Label l1 = new Label("Rot");
        l1.setBounds(20,50,70, 20);
        l1.setBackground(Color.WHITE);
        add(l1);
        /// habe ich neu angelegt um die zahlenausgabe zu machen!!!
        l11 = new Label();
        l11.setBounds(360, 50, 80, 20);
        l11.setBackground(Color.WHITE);
        add(l11);
        // Regler2: Gruen RGB
        s2.setBounds(100,100,250,20);
        s2.addAdjustmentListener(this);
        s2.setName("gruen");
        s2.setMinimum(0);
        s2.setMaximum(265);
        add(s2);
        Label l2 = new Label("Gruen");
        l2.setBounds(20,100, 70, 20);
        l2.setBackground(Color.WHITE);
        add(l2);
        // Regler3: Blau RGB
        s3.setBounds(100,150,250,20);
        s3.addAdjustmentListener(this);
        s3.setName("blau");
        s3.setMinimum(0);
        s3.setMaximum(265);
        add(s3);
        Label l3 = new Label("Blau");
        l3.setBounds(20,150, 70, 20);
        l3.setBackground(Color.WHITE);
        add(l3);
    }
    public void adjustmentValueChanged(final AdjustmentEvent e) {
        int rot;
        int gruen;
        int blau;
        rot = s1.getValue();
        gruen = s2.getValue();
        blau = s3.getValue();
        l11.setText(rot+", "+gruen+", "+blau);
        farbfeld.setBackground(new Color(rot, gruen, blau));
    }
    public static void main(final String [] args) {new Regler().setVisible(true);}
}
```


----------



## lordsaibo (19. Feb 2007)

hey danke. ich hab das jetzt noch bisschen verändert. eine Frage noch: was bringt das wenn du manche sachen final machst? z.B. final AdjustmentEvent e


----------



## André Uhres (19. Feb 2007)

http://www.java-forum.org/de/viewtopic.php?p=154193#154193


----------



## lordsaibo (20. Feb 2007)

noch eine frage wenn ich jetzt noch die HSB Werte angeben will wie verwende ich denn diese methode:

public static float[] RGBtoHSB ?

mit dem feld versteh ich das nicht so ganz?


----------



## André Uhres (20. Feb 2007)

```
float[] hsbvals = Color.RGBtoHSB(rot, gruen, blau, null);
        l12.setText((int)(hsbvals[0]*360)+", "+(int)(hsbvals[1]*100)+", "+(int)(hsbvals[2]*100));
```


----------

