Frage

Ich versuche, in Java eine Farbe mit Klassen und Hierarchie zu machen. Aber mein Farbbereich erhält die Hintergrundfarbe (definiert als weiß definiert) und wenn ich klicke, erstellt er einen Druckbildschirm im JPanel -Bereich der Zeichnung. Mit Super.PaintComponent (g) erscheint die Schnittstelle in Ordnung, aber ich bekomme nur einen Punkt jedes Mal. Mit Super.PaintComponents (g) druckt es den Rahmen im Bereich JPanel.

Irgendwelche Gedanken darüber, was passiert?

public class MandaDesenhar extends JPanel
{
static int x;
static int y;

private static final long serialVersionUID = 1L;
int i = 0;

public void paintComponent(Graphics g)
{   
    super.paintComponents(g);

    if (Paint4Fun.lista.size() == 0)
        return;

    while (i<Paint4Fun.lista.size())
    {
        FormaPrimitiva forma = Paint4Fun.lista.get(i);
        forma.desenha(g);
        i++;
    }
}
War es hilfreich?

Lösung

Sie sollten definieren i lokal in Ihrem paintComponent Methode, nicht außerhalb davon, und initialisieren Sie sie dort zu 0.

Andernfalls malen Sie immer nur die neuen Elemente Ihrer Liste, nicht die älteren.

Bearbeiten:Sie können Ihre Schleife als For-Loop besser schreiben:

for(int i = 0; i < Paint4Fun.lista.size(); i++) {
   FormaPrimitiva forma = Paint4Fun.lista.get(i);
   forma.desenha(g); 
}

oder noch deutlicher:

for(FormaPrimitiva forma : Paint4Fun.lista) {
    forma.desenha(g);
}

Im Allgemeinen immer Variablen deklarieren (wie die i hier) im kleinstmöglichen Bereich (die Methode oder sogar die Schleife hier).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top