Beiträge von curse

Wir sammeln alle Infos der Bonusepisode von Pokémon Karmesin und Purpur für euch!

Zu der Infoseite von „Die Mo-Mo-Manie“

    Oh cool, setBackground(), merk ich mir ^^
    Aber trotzdem müsste meins doch auch gehen oder?!


    Du tust nicht den Hintergrund transparent machen, sondern zeichnest ein transparentes Rechteck über das ganze Panel. Ist halt etwas unsauber, aber dürfte deswegen trotzdem in diesem Fall funktionieren.



    Ich habe deine methode eigentlich 1:1 übernommen, sie nur nicht als extramethode gemacht, sondern die parameter direkt mit den variablen überschrieben, die ich brauche


    Zeig mal bitte deinen kompletten Code.

    ah ok thx, das mit arraycopy funktioniert. allerdings, wenn ich, nachdem ich den clon erzeugt habe, das original auf den wert des clons setzen will, funktioniert das irgendwie nicht... eigentlich müsste da doch

    Java
    original=clon;

    ausreichen oder? ich habe es auch mit

    Java
    original=clon.clone();

    ausprobiert, hat aber auch nicht geklappt... e:// und jetzt gerade auch noch mit arraycopy, aber nicht funktionert...


    Hast du auch mal meine copyArray()-Methode ausprobiert? Mit der sollte das eigentlich wie gewollt klappen.



    ja, an sich hat das mit dem setzen des transparentwertes funktioniert, das blöde war nur, dass ich irgendwie den hintergrund nicht transparent hinbekommen habe, sodass man immer das quadratische bufferedImage gesehen hat, welches ich auf das graphics-objekt gezeichnet habe... an sich müsste doch eigentlich für einen transparenten hintergrund

    Java
    g.setColor(new Color(255,255,255,0)); //wobei eigentlich nur der Transparentwert wichtig ist
    g.fillRect(0,0,getWidth(),getHeight());


    das reichen oder?


    Die Hintergrundfarbe legst du mit setBackground() fest

    hm komisch, ich habe es eigentlich genauso...



    Java
    Color[][] spielfeldCopy = spielfeld.clone();       spielfeld[0][0]=Color.BLUE;      spielfeldCopy[0][0]=Color.GREEN;      System.out.println(""+spielfeld[0][0]+","+spielfeldCopy[0][0]); //Ausgabe: java.awt.Color[r=0,g=255,b=0],java.awt.Color[r=0,g=255,b=0]


    wie man sieht also genau das gleiche...


    Ja, in meinem Beispiel verwende ich auch ein eindimensionales Array. Zweidimensionale Arrays werden in Java aber als Array eines Arrays repräsentiert, um die zweite Dimension auch noch zu klonen musst du die Werte des eindimensionalen Arrays noch einmal Stück für Stück durchgehen und einzeln clone() anwenden. System.arraycopy() eignet sich dafür sogar noch besser.


    Java
    public void copyArray(int[][] source, int[][] destination) {
    	for (int i = 0; i < source.length; i++) {
    		System.arraycopy(source[i], 0, destination[i], 0, source[i].length);
    	}
    }



    e:// und dann nochmal zum transparenzproblem:
    Ist es möglich, alle Pixel auf einem Graphics-Object auf einen gewissen Transparenzwert zu setzen? (außer mit 2 for-schleifen pixel für pixel abzugehen) ich hatte mir gedacht, dass ich den transparenten teil auf das grafikobjekt eines BufferedImages male und dann das BufferedImage auf mein richtiges Grafikobjekt. Wenn es dann das gibt, wonach ich frage, wäre das Problem gelöst^^


    Ich glaube du müsstest das für alle Pixel einzeln mit setRGB() machen (also mit zwei verschachtelten Schleifen). Ob deine Variante so funktioniert, kann ich nicht sagen. Hast du sie denn mal ausprobiert?


    ich habe jetzt gerade noch ein problem^^
    ich möchte ein array clonen, im dem clon etwas ändern, und später entweder das original mit dem clon überschreiben oder nicht. jetzt habe ich natürlich zuerst an die .clone() methode gedacht, die erweist sich allerdings als nicht funktionierend für mich, wahrscheinlich weil die refernenzen auf die werte im array noch die gleichen sind. gibt es da schon etwas vorgeschriebenes, was mir ein array gibt, an dem ich etwas ändern kann, ohne das original zu ändern oder muss ich selber das gesamte array mit clone durchgehen und dann jeden einzelnen eintrag clonen?


    Wenn du ein Array mit der clone()-Methode klonst, wird für das geklonte Array eine eigene Referenz erstellt. Eine Änderung von den Werten der Kopie würde das Original demzufolge nicht beeinflussen.


    java graphics:
    ich zeichne einen kreis und ein rechteck, beide haben eine transparenz von 125/255. das blöde ist, dass die beiden sich an manchen stellen überlappen, und an diesen überlappenden stellen ist es dann dunkler gefärbt als an anderen. kann ich das irgendwie umgehen?


    Die einzige Möglichkeit, die mir dazu einfällt wäre die Transparenz von einem der Objekte zu reduzieren oder ganz zu entfernen.


    java mouselistener / mousemotionlistener:
    ich habe ein panel (a), was wieder ein panel (b) und eine scrollbar hat, welche auch ein panel (c) hat. wenn ich in c die maus drücke, und dann in panel a ziehe, ist das mouseDragged event immer noch von panel c. kann ich das irgendwie ändern?


    Java
    panelA.addMouseMotionListener(this);


    wie heißen nochmal diese klassen, welche keine objekterzeugung benötigten bzw. wie werden diese initialisert?


    Abstrakte Klassen können nicht als Objekte instanziiert werden.


    Das ist die Tabelle aus dem Artikel über Ash Ketchum. Jetzt musst du nur noch den Editor aufrufen, zur Code-Ansicht wechseln und den Code dort einfügen. ;)