Ergebnis 1 bis 8 von 8

Thema: [Java] Farbwerte übergeben

  1. #1

    [Java] Farbwerte übergeben

    Moin.
    Ich arbeite gerade an einem dollen kleinen Programm, mit dem es möglich sein soll mit Hilfe von verschiedenen Formen (Kreis, Viereck, etc.) Zeichnungen zu erstellen und später abzuspeichern.
    Dazu habe ich einmal eine Choice aus der man die verschiedenen Formen auswählen kann, eine Choice in der man die Liniendicke auswählen kann und eine Choice aus der man verschiedene Farben auswählen kann.
    Jetzt hab ich das Problem, dass wenn ich bei der Farbauswahl eine neue Farbe auswähle, dass der neue Farbwert nicht an paint übergeben wird.
    Insgesamt hab ich mir 2 Ansätze ausgedacht mit denen man das vielleicht lösen könnte, bei der ersten läuft der Compiler einfach stumm durch und gibt auch keine Fehlermeldung aus. Allerdings passiert auch auf dem Applet nichts wenn ich in der Choice was anderes auswähl. Ich habe auch in den ItemListener der Choice eine Testfunktion eingebaut um zu testen ob bei einem Itemwechsel eine Ausgabe erfolgt. Das ist der Fall.
    Bei der 2. Variante meldet der mir "illegal start of Expression" innerhalb der Choice für die Farbauswahl.
    Überseh ich vielleicht einfach nur irgendne Kleinigkeit oder denke ich völlig in eine falsche Richtung?
    Ich hab auf die selbe Art und Weise die Größenauswahl zum Laufen bekommen, deshalb dachte ich, dass das da vielleicht genauso geht, denn eigentlich müssen sich bei einer Farbänderung ja nur die rgb Werte ändern.
    Jedenfalls sind hier mal die beiden Versionen, vielleicht sieht ja jemand der mit der Sprache etwas geübter ist als ich den Fehler.

    Version 1


    P.S.: Das Programm ist noch lange nicht fertig, also nicht wundern wenn noch einige Zeichenfunktionen oder die Funktionen zum Abspeichern fehlen

    edit: Ich hab Version 2 ein wenig bearbeitet. Die eigentliche Fehlermeldung "illegal start of expression" ist nun verschwunden, dafür meldet der jetzt bei allen 10 "Farben.setColor (Color."farbe");" "cannot find symbol" ...
    Soweit ich weis sind doch einige Farben in der java.awt.Color standartmäßig mit drin oder? Wie kommts dass er die trotzdem nicht findet? Importiert hab ich die oben ja.
    Ich hab auch schon versucht die Farbwerte per String an "Farben" zu übergeben, hat auch nicht geklappt.

    edit2: Quelltext Update

    Geändert von Time Streamer (22.04.2006 um 14:30 Uhr)

  2. #2
    Zitat Zitat von Time Streamer
    edit: Ich hab Version 2 ein wenig bearbeitet. Die eigentliche Fehlermeldung "illegal start of expression" ist nun verschwunden, dafür meldet der jetzt bei allen 10 "Farben.setColor (Color."farbe");" "cannot find symbol" ...
    Das kommt daher, dass die "Color"-Klasse keine Methode "setColor ()" definiert. Ich weiß ehrlich gesagt nicht, ob man ein Color-Objekt überhaupt verändern kann, du müsstest sonst eben jedes Mal ein neues Objekt erstellen und dann den Pointer "Farben" darauf zeigen lassen.

    Ich hoffe, das war's, sonst frag halt weiter. ^^ Irgendwann klappt's schon!
    Tolles Projekt auf jeden Fall, sowas Ähnliches werde ich vielleicht auch bald mal machen!

  3. #3
    meinst so:
    Code:
    Color black		= new Color (0, 0, 0);
    Color red		= new Color (255, 0, 0);
    ...
    ...
    ...
    
     if(Farbauswahl.getSelectedItem() == "Schwarz")
    Point Farben = new Point(black);
     if(Farbauswahl.getSelectedItem() == "Rot")
    Point Farben = new Point(red);
    ...
    ...
    public void paint(Graphics g)
    	{
    	         ...
    		g2d.setColor (Farben);
    ?

    Wenn ich das so mache, dann bekomm ich für jede der if-Anweisungen 2 solche hübsche Fehler:
    ...\Paint.java:202: not a statement
    Point Farben = new Point(black);

    und

    ...\Paint.java:202: ';' expected
    Point Farben = new Point(black);


  4. #4
    Öhm, was bitte ist die Klasse Point? Ich würde folgendes vorschlagen:

    Code:
    Color black		= new Color (0, 0, 0);
    Color red		= new Color (255, 0, 0);
    Color farben = null;
    ...
    ...
    ...
    
     if(Farbauswahl.getSelectedItem() == "Schwarz")
    farben = black;
     if(Farbauswahl.getSelectedItem() == "Rot")
    farben = red;
    ...
    ...
    public void paint(Graphics g)
    	{
    	         ...
    		g2d.setColor (farben);

    Geändert von DFYX (22.04.2006 um 02:12 Uhr)

  5. #5
    o_O o_O

    Ich habe doch nie die Klasse "Point" (obwohl's die gibt) erwähnt, das einzige Wort, das ich entdecke und auch nur annähernd danach klingt ist "Pointer", also ein Zeiger. Also ein bisschen Hintergrundinfo: Objekte werden nicht direkt in Variablen gespeichert, die Variablen enthalten nur sogenannte Pointer/Zeiger auf die Objekte.

    Daher habe ich gemeint, dass du, anstatt die nichtexistente Methode "setColor ()" zu verwenden, ein neues Color-Objekt erzeugen und den Pointer "Farben" darauf zeigen lassen sollst, also etwa:

    Code:
    if(Farbauswahl.getSelectedItem() == "Orange")
        Farben = Color.orange;
    Die Farben oben extra zu erzeugen ist unnötig, da sie, wie du ja schon richtig gesagt hast, ohnehin als statische Member in der Klasse "Color" gespeichert sind.

    @ DFYX: Hast du dir seinen Quellcode überhaupt angeschaut? Was soll das denn für ein Tipp sein? Und: was soll das für ein Code sein, "farben = new black;"? o_O

    Geändert von drunken monkey (22.04.2006 um 00:37 Uhr)

  6. #6
    Ok, es läuft mittlerweile.
    Hab einfach die Farbabfragen aus der Choice rausgenommen und direkt in die paint gesetzt.
    Dann hab ich einfach unter jede If-Anweisung folgendes gesetzt:
    "g2d.setColor(Color.black);" bzw für die anderen farben halt red, usw. und somit einfach anstelle eines Wertes für den Befehl einfach den Befehl selber geändert.
    Tjo und jetzt läufts.
    Trotzdem Danke für jede Hilfe, ich werd sicherlich bald nochmal drauf zurück kommen

    Geändert von Time Streamer (22.04.2006 um 14:35 Uhr)

  7. #7
    @Monkey:
    sry, das new gehört weg *editier*

  8. #8
    ok neues Problem:
    Wie kann man Formen wie Geraden oder Kreise auf dem Applet von Hand zeichnen?
    Oder besser gesagt wie schafft man es das so hinzubekommen, dass sowohl für die Anfangskoordinate als auch für die Endkoordinate jeweils Mauskoordinaten übergeben werden?
    Die Anfangskoordinate zu setzen ist ja kein Problem, aber wie schaffe ich das bei der Endkoordinate?
    Oder gibts für derartige Geraden/Kreise/etc eine eigene Methode oder Funktion, oder wie funktioniert das?

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •