paint-Methode kopiert GUI

G

Guasto

Gast
Hallo, Community,
ich habe folgendes Problem:
Ich möchte auf einen JPanel einen String zeichnen.
Dazu habe ich eine Klasse geschrieben, die JPanel erweitert.
Wenn ich aber nun in der paint-Methode den String "in Auftrag gebe" wird ein Teil eines anderen Panels (mit Buttons, Comboboxen und co.) kopiert und auf einmal zeichnet der Panel statt des Strings diverse Buttons, eine JColorChooser und einige JXTaskpanes.
Es ist, als ob (nee, es IST einfach so), das Programm einfach ein Bildschirmfoto von dem anderen Panel macht und auf die Stelle, wo der String hingehört zeichnet.

Hier der Codeausschnitt:
Java:
g2.setFont(textAnimation.getFont());
g2.setColor(textAnimation.getFarbe());
g2.drawString(textAnimation.getText(), 50, this.getHeight() / 2 - 40);
Font, Farbe und text sind alle gesetzt...
Jemand eine Idee?
 

KrokoDiehl

Top Contributor
Aus deinen Codezeilen ist kein Fehler erkennbar. Interessant sind wohl folgende Informationen:
- Wie sieht die gesamte überschriebene paint-Methode aus (also eigentlich sollte man nur
Code:
paintComponent()
überschreiben ...)
- Wie wird die GUI denn zusammen-gelayoutet?
 
G

Guasto

Gast
1.)Zur GUI: Ich habe einen JFrame, rechts ist eine Leiste (JPanel, GridLayout) und links dad Panel, wo der String erscheinen soll.
2.)Die Methode sieht folgendermaßen aus:
Java:
@Override
    public void paint(Graphics g) {
        g2 = (Graphics2D) g;
        g2.setFont(textAnimation.getFont());
        g2.setColor(textAnimation.getFarbe());
        g2.drawString(textAnimation.getText(), 50, this.getHeight() / 2 - 40);
    }
Ich versuche es mal mit paintComponent.
3.)Nein, super.paint() habe ich noch nicht aufgerufen, werde es aber gleich mal damit versuchen.

Danke erstmal, habe mit so präzisen Vorschlägen und eventuellen Lösungswegen gar nicht gerechnet.
 
G

Guasto

Gast
Also, hab die Vorschlöge (also mit paintComponent() und super.paint()) mal probiert.
Das Gute daran: Das Programm kopiert keinen Teil der GUI mehr.
Das Schlechte: Der String erscheit auch nicht und ich bekomme folgende Exception:
Java:
Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
        at java.awt.Component.getFont_NoClientCode(Component.java:1757)
        at java.awt.Component.getFont(Component.java:1749)
        at javax.swing.JComponent.getComponentGraphics(JComponent.java:713)
        at javax.swing.JComponent.paint(JComponent.java:974)
        at animatepro.AnimationPanel.paintComponent(AnimationPanel.java:31)
        at javax.swing.JComponent.paint(JComponent.java:1029)
        at animatepro.AnimationPanel.paintComponent(AnimationPanel.java:31)
        at javax.swing.JComponent.paint(JComponent.java:1029)
        at animatepro.AnimationPanel.paintComponent(AnimationPanel.java:31)
        at javax.swing.JComponent.paint(JComponent.java:1029)
        at animatepro.AnimationPanel.paintComponent(AnimationPanel.java:31)
        at javax.swing.JComponent.paint(JComponent.java:1029)
        at animatepro.AnimationPanel.paintComponent(AnimationPanel.java:31)
        at javax.swing.JComponent.paint(JComponent.java:1029)
        at animatepro.AnimationPanel.paintComponent(AnimationPanel.java:31)
        at javax.swing.JComponent.paint(JComponent.java:1029)
        at animatepro.AnimationPanel.paintComponent(AnimationPanel.java:31)
        at javax.swing.JComponent.paint(JComponent.java:1029)
        at animatepro.AnimationPanel.paintComponent(AnimationPanel.java:31)
        at javax.swing.JComponent.paint(JComponent.java:1029)
Ich habe die jetzt mal stark gekürzt, so geht es noch ziemlich lange weiter :(
Die ansgesprochene Zeile 31 ist folgende:
Java:
super.paint(g);
 
G

Guasto

Gast
Entschuldigt bitte den erneuten post, aber ich habe das ganze jetzt einmal ohne die offensichtlich problematische Zeit versucht und dabei festgestellt:
Es wird wieder ein Teil der GUI kopiert - der String ist zu sehen...
 

P@u1

Aktives Mitglied
Der Stackoverflow lässt darauf schließen, dass eine unendliche Rekursion ensteht, soll heißen, dass die methode sich (direkt oder indirekt) selbst aufruft und das unendlich oft.
Kann es sein, dass du in der paintComponent methode super.paint aufrufst?
Wenn ja, dann versuch mal stattdessen super.paintComponent aufzurufen, evtl. hilfts ja was.
Ich weiß leider auch nicht genau, wie paint und paintComponent zusammenhängen, aber es könnte sein, dass paint paintComponent aufruft.
Und wenn du dann in paintComponent wieder paint aufrufst, ist ja klar, dass nen stackoverflow kommt.
Ich denke, genau das ist bei dir passiert.

Übrigens: Hat das Forum bei euch auch gerade Anzeigefehler?
 
G

Guasto

Gast
Nein,das hilft leider auch nicht...
Oder sollte ich das mit dem super.paintComponent(); besser im Konstruktor aufrufen?
Ja, bei mir schaut's auch komisch aus :)
 

P@u1

Aktives Mitglied
Du kriegst immer noch den Stackoverflow?

Wenn ja, dann poste nochmal die aktullle paint und/oder paintComponent methode bitte.
 
G

Gast2

Gast
wenn du die paintComponent überschreibst sollte das später so aussehen:

Java:
@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);
    // dein code
}
(nicht verwechseln mit der methode paintComponents... da schleicht sich gern mal ein s zuviel ein.
 
G

Guasto

Gast
Ach, habe ich gar nicht gekuckt...
Nee, keine Exception mehr, aber funktionieren tut's trotzdem nicht...
 
G

Guasto

Gast
Ja, so schaut's auch aus...
Nur macht vielleicht das einen Unterschied:
g2 = (Graphics2D) g;??
Ansonsten bin ich ziemlich ratlos,

PS @EikeB: Ich meine ich hätte dich schonmal gefragt, wenn ja dann sorry aber: kommst du aus Bennigsen?
 
G

Gast2

Gast
Nein das macht meinen unterschied.

Und ja, hast mich schonmal gefragt, und nein, ich komm da nich her
 
G

Gusto

Gast
Oha, ich verpasse immer die letzte Antwort^^
Äh, ich glaube es wird ziemlich schwierig, ein KSKB anzufertigen...
Und kurz würde es ganz bestimmt nicht...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
krgewb 2D-Grafik paint-Methode wird zu oft ausgeführt AWT, Swing, JavaFX & SWT 5
S Zeichen ohne paint-Methode AWT, Swing, JavaFX & SWT 2
J Swing Wann brauche ich @Override vor der paint()-Methode? AWT, Swing, JavaFX & SWT 1
G Eine paint-Methode, 2 Welten? AWT, Swing, JavaFX & SWT 3
A paint-Methode aufrufen AWT, Swing, JavaFX & SWT 13
S Grafik: Programm kommt nicht zur paint()-Methode AWT, Swing, JavaFX & SWT 6
W Paint-Methode in anderer Klasse funktioniert nicht AWT, Swing, JavaFX & SWT 7
F 2D-Grafik Was ruft die Paint - Methode auf ? AWT, Swing, JavaFX & SWT 2
S JButton u. Label auf paint-Methode AWT, Swing, JavaFX & SWT 1
S Paint Methode ohne implements JPanel AWT, Swing, JavaFX & SWT 1
S Farbe ändern bei der paint-Methode AWT, Swing, JavaFX & SWT 5
J ActionListener soll auf paint() Methode zugreifen AWT, Swing, JavaFX & SWT 1
J Problem mit der paint Methode AWT, Swing, JavaFX & SWT 0
Junb 2D-Grafik paint() Methode bugt? AWT, Swing, JavaFX & SWT 2
I Paint-Methode von nicht statischen Objekten aufrufen AWT, Swing, JavaFX & SWT 3
D JSlider "laggt" nach überschreiben der paint methode AWT, Swing, JavaFX & SWT 2
A Paint Methode externer auruf AWT, Swing, JavaFX & SWT 5
J AWT Methode paint() AWT, Swing, JavaFX & SWT 4
X Bild via FileChooser in paint-Methode laden AWT, Swing, JavaFX & SWT 2
F AWT Probleme mit der paint() methode AWT, Swing, JavaFX & SWT 2
C Unterschiedlicher Aufruf der paint() Methode ? (AWT/Swing) AWT, Swing, JavaFX & SWT 2
L Problem mit paint Methode und Bild AWT, Swing, JavaFX & SWT 7
F paint-Methode des JComboboxEditorComponent AWT, Swing, JavaFX & SWT 2
hdi Swing JLabel & paint-Methode gemixt - wie schlimm wirklich? AWT, Swing, JavaFX & SWT 5
N Paint methode anhalten und neustarten AWT, Swing, JavaFX & SWT 5
R [gelöst]Fenster schließen - trotz Endlosschleife in der Paint-Methode? AWT, Swing, JavaFX & SWT 3
M Allgemeines zur paint Methode AWT, Swing, JavaFX & SWT 5
A paint()-Methode für Videoexport nutzen AWT, Swing, JavaFX & SWT 2
D Paint() Methode aus einer anderen Klasse aufrufen AWT, Swing, JavaFX & SWT 6
L Dynamisches Ändern der Größe in JPanel mit paint()-Methode AWT, Swing, JavaFX & SWT 8
C paint-Methode überschreiben AWT, Swing, JavaFX & SWT 19
hdi meine paint-methode macht faxen? AWT, Swing, JavaFX & SWT 21
G paint() Methode aus anderer klasse aufrufen? AWT, Swing, JavaFX & SWT 6
G Frage zur paint-Methode (AWT) AWT, Swing, JavaFX & SWT 9
N paint Methode im JFrame AWT, Swing, JavaFX & SWT 3
T Paint-Methode geht nicht AWT, Swing, JavaFX & SWT 5
F Paint-Methode Überschreiben macht Refresh-Fehler ? AWT, Swing, JavaFX & SWT 8
B paint methode wiederholen AWT, Swing, JavaFX & SWT 6
G Problem mit paint Methode und Buttons AWT, Swing, JavaFX & SWT 10
T JPanel - paint Methode?, aber wie AWT, Swing, JavaFX & SWT 13
K paint-Methode überschrieben - trotzdem JComponenten zeichnen AWT, Swing, JavaFX & SWT 5
bummerland paint Methode AWT, Swing, JavaFX & SWT 2
H 2D-Grafik Problem mit Paint AWT, Swing, JavaFX & SWT 1
frager2345 Warum paintComponent hier und nicht paint AWT, Swing, JavaFX & SWT 2
U Was ist der Unterschied von paint und paincomponent? AWT, Swing, JavaFX & SWT 3
L 2D-Grafik Swing paint|paintComponent AWT, Swing, JavaFX & SWT 2
H Swing + Paint: Mehrere Objekte zeichnen lassen AWT, Swing, JavaFX & SWT 3
Xanny 2D-Grafik Beginner! Probleme mit Swing, Gprahics class und paint AWT, Swing, JavaFX & SWT 13
L Berechnungen in paint AWT, Swing, JavaFX & SWT 8
S 2 Paint-Methoden in einer Klasse ? AWT, Swing, JavaFX & SWT 2
J zwei Paint methoden in einer Klasse AWT, Swing, JavaFX & SWT 3
P Paint und paintComponent AWT, Swing, JavaFX & SWT 12
S 2 paint-Methoden in einer Klasse ? AWT, Swing, JavaFX & SWT 2
C JFrame paint ohne hintergrund nutzen AWT, Swing, JavaFX & SWT 6
A Swing Paint mit Button Clear den Hintergrund säubern um wieder zeichnen zu können AWT, Swing, JavaFX & SWT 2
K 2D-Grafik Paint - Wie binde ich repaint ein? AWT, Swing, JavaFX & SWT 8
S paint() verzögern AWT, Swing, JavaFX & SWT 9
K AWT begrenzte anzahl paint aufrufe AWT, Swing, JavaFX & SWT 6
B Infolabel Probleme mit Paint() ? AWT, Swing, JavaFX & SWT 8
L AWT paint mit ArrayList und Iterator AWT, Swing, JavaFX & SWT 3
Furtano AWT paint braucht ein Graphics Objekt ? AWT, Swing, JavaFX & SWT 2
L Swing 64bit Problem mit paint/paintComponent AWT, Swing, JavaFX & SWT 7
T JFrame und paint() AWT, Swing, JavaFX & SWT 5
B Ablauf der paint-Methoden von JComponents AWT, Swing, JavaFX & SWT 20
F 2D-Grafik Hostkomponentengröße in paint AWT, Swing, JavaFX & SWT 2
L JFrame an Paint-Inhalt anpassen AWT, Swing, JavaFX & SWT 6
E Warum übermalt paint das ganze Fenster? AWT, Swing, JavaFX & SWT 15
T paint() wird nicht aufgerufen AWT, Swing, JavaFX & SWT 8
M JMenuBar im Applet und paint AWT, Swing, JavaFX & SWT 9
H paint überlappend AWT, Swing, JavaFX & SWT 5
E paint AWT, Swing, JavaFX & SWT 3
H Swing paint() von JPanel wird nicht aufgerufen AWT, Swing, JavaFX & SWT 10
L AWT Paint(g) im Listener aufrufen AWT, Swing, JavaFX & SWT 2
S JCheckBox Paint AWT, Swing, JavaFX & SWT 7
F Swing Paint mit Canvas Element AWT, Swing, JavaFX & SWT 35
K AWT paint wird nicht aufgerufen AWT, Swing, JavaFX & SWT 7
R LayoutManager Image Paint + Text Panel AWT, Swing, JavaFX & SWT 10
S Threads in einen Frame zeichnen lassen (Paint()?!) AWT, Swing, JavaFX & SWT 5
radiac Swing JFrame - paint(g) - FrameObjects bei activeRendering AWT, Swing, JavaFX & SWT 3
I AWT paint() in MouseEvent aufrufen klappt nicht AWT, Swing, JavaFX & SWT 8
T paint() wird zweimal ausgeführt AWT, Swing, JavaFX & SWT 6
H AWT Wann ist paint() fertig? AWT, Swing, JavaFX & SWT 7
W Steuerelemente und paint() in einem JPanel AWT, Swing, JavaFX & SWT 3
M AWT Component/Canvas erzeugt unerwünschten Rahmen bei paint AWT, Swing, JavaFX & SWT 3
T Dialog ohne Frame, direktes paint in graphics AWT, Swing, JavaFX & SWT 5
G Probleme mit repaint / paint AWT, Swing, JavaFX & SWT 6
K repaint() ruft paint() nicht auf AWT, Swing, JavaFX & SWT 14
J Canvas / paint() AWT, Swing, JavaFX & SWT 2
bugmenot paint() verzögert ausgeführt? AWT, Swing, JavaFX & SWT 4
S paint() in anderen Methoden AWT, Swing, JavaFX & SWT 5
J getFontMetrics außerhalb von paint(Graphics g) AWT, Swing, JavaFX & SWT 8
H paint verwenden AWT, Swing, JavaFX & SWT 3
S java.awt.Component und paint() AWT, Swing, JavaFX & SWT 4
A Paint funktioniert nicht richtig AWT, Swing, JavaFX & SWT 7
G JScrollPane mit "paint" scrollt nicht AWT, Swing, JavaFX & SWT 2
T Variable Menge an Bildern außerhalb paint() zeichnen? AWT, Swing, JavaFX & SWT 2
G Paint und Buttons AWT, Swing, JavaFX & SWT 8
G JFrame JPanel und Paint(Image)? AWT, Swing, JavaFX & SWT 6
S Programm aufgrund von paint() zu langsam AWT, Swing, JavaFX & SWT 18
G paint() wird aufgerufen, aber nicht angezeigt AWT, Swing, JavaFX & SWT 10

Ähnliche Java Themen

Neue Themen


Oben