paintComponent Methode

.basti

Aktives Mitglied
Guten Abend,
ich hab eine kurze Frage. Ist es möglich, wenn ich zwei Rechtecke mit der paintComponent Methode zeichnen lasse, nur eines davon repaint-en zu lassen? Wenn ja wie?
LG
 
K

kneitzel

Gast
Du kannst doch in einer Instanzvariable speichern, was gemalt werden soll um dann in der Methode nur das zu malen, was du aktuell malen willst.
 

Oneixee5

Top Contributor
Dazu folgendes kleines Testprogramm. Es soll zeigen, wenn das Rechtecke einmal auf das Graphics-Object gezeichnet wurde, dann bleibt es immer erhalten. Wenn du dein Rechteck also neu Zeichnen willst, mit einer anderen Größe oder Position, dann musst du das bestehende Rechteck zuerst "übermalen". Sonst werden am Ende 2 Rechtecke dargestellt. es funktioniert quasi genau wie auf einem Blatt Papier.
Hast du jetzt 2 Rechtecke (unterschiedliche Farbe, Lienenstärke) gezeichnet und beide überschneiden sich, dann musst du beide Rechtecke löschen und neu zeichnen, wenn eins davon verändert werden soll. In der Zeichnung bleiben ansonsten irgendwelche Fragmente an den Berührungspunken zurück.

Java:
class TestPaint extends JPanel {

    private int offset = 10;

    public TestPaint() {
        setBackground(Color.WHITE);
    }

    @Override
    public void paintComponent(final Graphics g) {
        g.drawRect(this.offset, this.offset,
                getWidth() - 2 * this.offset,
                getHeight() - 2 * this.offset);
    }

    public static void main(final String[] args) throws Exception {
        final JFrame jFrame = new JFrame();
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jFrame.setSize(300, 300);
        final TestPaint comp = new TestPaint();

        jFrame.add(comp);
        jFrame.setVisible(true);

        for (int i = 10; i < 40; i+=2) {
            Thread.sleep(300);
            comp.offset = i;
            comp.repaint();
        }

    }
}
}
 

.basti

Aktives Mitglied
Ich glaub ich hab das bisschen falsch formuliert, ich beschreibe es nochmal genauer. Ich programmier ein kleines Spiel einfach um mir die Grundlagen bisschen beizubringen und da hab ich ein Spieler den ich mit w,a,s,d bewegen kann ich ein Rechteck mit zufälligen x,y Koordinaten. Um allerdings den Spieler bewegen zu lassen brauch ich einen Timer und eben repaint. Dieser Timer zeichnet aber dann nicht nur meinen Spieler neu sondern auch alle paar ms mein Hindernis und dann fliegt es im Frame umher. Ich hab beides in einer Klasse zeichnen lassen, weil ich sonst nicht beides gleichzeitig in mein Frame dargestellt bekomme. Wie kann ich also nur meinem Programm sagen, dass nur der Spiel neu gezeichnet werden soll?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
GRAZZ0R "PaintComponent" und "MouseListener" einbinden Spiele- und Multimedia-Programmierung 4
A paintComponent in JPanel in JFrame Spiele- und Multimedia-Programmierung 7
S PaintComponent zeichnet in falscher reihenfolge Spiele- und Multimedia-Programmierung 8
S Thread und jpanel-paintcomponent kombinierbar?? Spiele- und Multimedia-Programmierung 14
R BufferStrategy vs. paintComponent Spiele- und Multimedia-Programmierung 9
W JOGL bleibt nach display() in PaintArea.paintComponent hängen Spiele- und Multimedia-Programmierung 5
B paintComponent() , Parameter Spiele- und Multimedia-Programmierung 2
P Zahlenwert durch Methode ersetzen Spiele- und Multimedia-Programmierung 1
P .Wav Datei vor main-Methode abspielen? Spiele- und Multimedia-Programmierung 9
H Exeption in thread "Thread-2" NullPointerExeption: init methode? Spiele- und Multimedia-Programmierung 25
S GetBufferStrategy-Methode wird nicht angezeigt Spiele- und Multimedia-Programmierung 6
K Flackern bei repaint Methode Spiele- und Multimedia-Programmierung 3
A Zeichnen außerhalb der paint-Methode Spiele- und Multimedia-Programmierung 6
R Aufruf einer render-Methode Spiele- und Multimedia-Programmierung 12
G Methode sleepen während das Spiel weiterläuft Spiele- und Multimedia-Programmierung 3
M Beste methode zur Map Erstellen in "Block" Games Spiele- und Multimedia-Programmierung 2
J Images laden in static Methode Spiele- und Multimedia-Programmierung 8
P NullPointerException bei Aufruf von Methode Spiele- und Multimedia-Programmierung 10
G Mein erstes minigame -> problem mit Methode Spiele- und Multimedia-Programmierung 3
D Problem Mit Miensweeper Clone & rekursive Methode Spiele- und Multimedia-Programmierung 4
M Run- Methode zu überladen Spiele- und Multimedia-Programmierung 4
S Methode verändert mein Eingabe Array oO Spiele- und Multimedia-Programmierung 6
S Problem beim laden eines Bildes in einer Methode Spiele- und Multimedia-Programmierung 14
D Methode in eigenem Thread auslagern Spiele- und Multimedia-Programmierung 9
A Hilfe bei der Methode COLOR (Java) Spiele- und Multimedia-Programmierung 10
S transparenz per paint()-methode will nicht Spiele- und Multimedia-Programmierung 12
H Bilder speichern 2 - Methode richten? Spiele- und Multimedia-Programmierung 2
S Zur Laufzeit auf die Methode einer anderen Klasse zugreifen Spiele- und Multimedia-Programmierung 5
A Methode:setPointAntialiasingEnable(true) Spiele- und Multimedia-Programmierung 2
chik Wie arbeitet die polygon.contains Methode in Java Spiele- und Multimedia-Programmierung 4

Ähnliche Java Themen

Neue Themen


Oben