Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich habe ein Problem mit setBackground.
Die Methode farbverlauf() soll einen Farbverlauf zwischen zwei angegebenen Farben erzeugen. Angezeigt wird der Verlauf als Hintergrundfarbe eines JTextField (anzeigeGross).
Hierfür habe ich ersteinmal versucht eine Farbe Grün zu erzeugen und pro Schleifenumlauf den g-Wert der RGB-Farbe um eins zu verringern. Die Farbe soll jeweils angezeigt werden.
Genau da liegt das Problem, sobald die Methode gestartet wird verringert sich der g-Wert zwar, aber die Farbe wird nicht angezeigt, sie bleibt während des ganzen Schleifendurchlaufs auf der zuletzt angezeigten Farbe. Erst am Ende des Schleifendurchlaufs springt die Anzeige auf Schwarz.
Es scheint als würde der Befehl anzeigeGross.setBackground(farbe1) gar nicht durchlaufen, beim debuggen kann man aber sehen dass dies nicht der Fall ist.
Die Werte g und farbe1 ändern sich entsprechend, anzeigeGross ändert den Wert für Background
Kann mir jemand sagen wie ich die Hintergrundfarbe während des Schleifendurchlaufs anzeigen lassen kann?
ich hab mal keine ahnung was du mit dem RGBtoHSV machst... aber ehrlich gesagt muss ich das auch nich
Java:
public void farbverlauf()
{
int r = 0;
int g = 255;
int b = 0;
while(g > 0)
{
anzeigeGross.setBackground(new Color(r,g,b));
g--;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
ich habs nich getestet... aber damit sollte er in jedem schleifendurchlauf deinen g-wert um 1 reduzieren und auch anzeigen... wenn nich bin ich selbst auf die lösung gespannt ???:L
Die RGBtoHSV Methode ist wohl noch aus voherrigen Versuchen übrig geblieben. Ich hab deinen Code ausprobiert, funktioniert leider genauso wenig wie meiner.
anzeigegross wird folgendermaßen in die GUI eingefügt
Ich habe eine GUI worüber man Farben einlesen kann. Auf der GUI befindet sich ein Bild des CIE Diagramms, wenn man mit der Maus in das Bild klickt wird die jeweilige Farbe angezeigt. Das funktioniert auch soweit.
makePoints bildet mir ein Dreieck in dem Cie Diagramm ab
draw zeichnet einen kleinen kreis an die aktuelle stelle(an die stelle des MAuszeigers)
updateSliders zeigt die aktuellen RGB werte auf Schiebereglern an
in berechneHS werden die Farbwerte aus dem Diagramm in das HSV-Farbmodell umgerechnet
in color sollen später die ausgewählten Farbwerte gespeichert werden
diese Funktion greift also auch auf anzeigeGross zu
ansonsten befinden sich noch Buttons, und Auswahlknöpfe auf der Oberfläche, die aber bis jetzt noch keinerlei funktion haben.
den TestFarbablauf starte ich über einen Button TEST
Java:
private void makeTestButton() {
//TestButton
JButton buttonTest = new JButton("Test");
buttonTest.addActionListener(this);
buttonTest.setActionCommand("BT");
c.fill=GridBagConstraints.NONE;
c.anchor=GridBagConstraints.NORTH;
c.gridx=1;
c.gridy=3;
c.gridwidth = 1;
c.gridheight = 1;
c.ipadx=0;
gbL.setConstraints(buttonTest,c);
contentPane.add(buttonTest);
}
@Override
public void actionPerformed(ActionEvent evt) {
if (evt.getActionCommand().equals("ScBV")){
int hv = i+1;
str = Integer.toString(hv);
textFeldAnzSc.setText(str);
++i;
System.out.println("color1[i]: "+color1[i]);
System.out.println("i: "+i);
}
if (evt.getActionCommand().equals("ScBZ") && (i>0)){
int hv = i-1;
str = Integer.toString(hv);
textFeldAnzSc.setText(str);
i--;
System.out.println("color1[i]: "+color1[i]);
System.out.println("i: "+i);
}
if (evt.getActionCommand().equals("ZBV")){
k += 0.1;
System.out.println("k: "+k);
DecimalFormat df=new DecimalFormat("0.0");
textFeldZeit.setText(df.format(k));
}
if (evt.getActionCommand().equals("ZBZ")&&(k>0)){
k -= 0.1;
System.out.println("k: "+k);
DecimalFormat df=new DecimalFormat("0.0");
textFeldZeit.setText(df.format(k));
}
if (evt.getActionCommand().equals("BT")){
farbverlaufTest();
}
}
ich seh aber keinen Zusammenhang zwischen den einzelnen Funktionen, ich will ja für den Anfang erstmal irgeneinen Farbablauf darstellen, der mit der Auswahl aus dem Diagramm nichts zu tun hat.
Eben für mich un mein verständnis bitte... ^^ ich weiß etwas nervig...
ich kann also in der kombi von mal-das-anders und sleep nicht im eigenen thread arbeiten sondern muss das sleep von der mal-das-anders-EDT entkoppeln?
also einen Thread zum mal-das-anders und einen der das mal-das-anders aufgibt und ne runde schläft?!
In dem eingenständigen Thread kann/muß nach jeder Farbänderung
geschlafen werden damit der EDT auch zwischenzeitlich Zeit bekommt, die Änderung darzustellen!