mit Graphics erzeugte Strings verschwinden sofort wieder

Status
Nicht offen für weitere Antworten.

gurke1509

Mitglied
Hallo zusammen.

Ich habe folgendes Problem.
Ich erstelle ein JFrame mit einem Panel, in welches ich etwas sofort reinzeichnen möchte.
Jedoch tauchen die "Zeichnungen" immer nur für den Bruchteil einer Sekunde auf (nämlich genau dann, wenn sich das Fenster öffnet) und verschwinden dann wieder. Ich weiß einfach nicht warum.
Könnte mir da vielleicht einer bei helfen?

Hier der Programmcode:

Code:
import java.awt.*;
import javax.swing.*;

public class Graph
{
    JFrame fgraph;
    JPanel zeichenpanel;
    Graphics g;
    
    /** Erzeugt das Fenster mit einem bemalbaren Panel */
    public Graph(String titel)
    {
        fgraph = new JFrame(titel);
        fgraph.setSize(new Dimension(500,500));
        Container content = fgraph.getContentPane();
        content.setLayout(new BorderLayout(0,0));
        zeichenpanel = new JPanel();
        zeichenpanel.setBackground(Color.WHITE);
        content.add(zeichenpanel, BorderLayout.CENTER);
        fgraph.setVisible(true);

        g = zeichenpanel.getGraphics();
        g.setPaintMode();
        g.setColor(Color.BLACK);
        g.drawString("0",10,400);
        g.drawString("10",30,400);
        g.drawString("20",50,400); 
    }

    
}

Gruß Tobias
 

dieta

Top Contributor
Das liegt daran, dass der String von dir gezeichnet wird, und direk beim Neuzeichnen "überzeichnet" wird. Damit es funktioniert, musst du die paintComponent des JPanels überschreiben, so dass er bei jedem Neuzeichnen den String zeichnet.

[edit]
Ungefähr so:
Code:
import java.awt.*;
import javax.swing.*;

public class Graph
{
    JFrame fgraph;
    JPanel zeichenpanel;
    Graphics g;
   
    /** Erzeugt das Fenster mit einem bemalbaren Panel */
    public Graph(String titel)
    {
        fgraph = new JFrame(titel);
        fgraph.setSize(new Dimension(500,500));
        Container content = fgraph.getContentPane();
        content.setLayout(new BorderLayout(0,0));
        zeichenpanel = new JPanel()
        {
            public void paintComponent(Graphics g)
            {
                super.paintComponent(g);
                g.setPaintMode();
                g.setColor(Color.BLACK);
                g.drawString("0",10,400);
                g.drawString("10",30,400);
                g.drawString("20",50,400);
            }
        };
        zeichenpanel.setBackground(Color.WHITE);
        content.add(zeichenpanel, BorderLayout.CENTER);
        fgraph.setVisible(true);
        
    }

   
}
[/edit]
 

gurke1509

Mitglied
Ok, danke. So funktioniert es auf jeden Fall schonmal. Nur da gibt es etwas, was ich nicht verstehe:
dieta hat gesagt.:
Das liegt daran, dass der String von dir gezeichnet wird, und direk beim Neuzeichnen "überzeichnet" wird.
Wann wird denn da was neugezeichnet und warum?
Und wie gehe ich das Problem an, wenn ich im Nachhinein etwas in das Panel zeichnen möchte?
Gruß Tobias
 
S

SlaterB

Gast
wann was neugezeichnet wird kannst du wenig kontrollieren,
zum Glück nicht 100x pro Sekunde bei einem 100Hz-Monitor,
aber doch recht oft, z.B. wenn Fenster sich überlagern,

du malst nicht auf ein Bild, das dann angezeigt wird,
sondern das ist ein ganz anderes System,
wann immer das Fenster gezeichnet wird (oft),
wird paintComponent aufgerufen und alles von Grund auf neu gemacht,

wenn du etwas ändern willst, dann ändere den ZUSTAND des Objektes,
und rufe evtl. repaint() auf, damit paintComponent automatisch angeworfen wird,

und paintComponent malt dann abhängig vom aktuellen Zustand alles neu,

---------

das andere Verfahren kannst du dir manuell nachbauen:
male zu beliebigen Zeitpunkten etwas einmalig auf ein Image-Objekt, das wird dort dauerhaft gespeichert,

in paintComponent malst du dann jedes Mal genau das Image,
fertig
 

gurke1509

Mitglied
Ok. Das leuchtet mir ein.
Es kann sein, dass ich gerade auf dem Schlauch stehe. Aber wie änder ich den Zustand des Objektes zeichenpanel?
Die ganzen Tutorials, die ich im Internet finde, helfen mir nicht weiter.
Bestimmt, wenn gleich einer schreibt, wie es geht, denke ich: "Achja.. sooo ist das" :wink:
 
S

SlaterB

Gast
das kommt darauf an was du haben möchtest, was geändert werden soll,
am besten machst du eine eigene Klasse für das Zeichenpanel,
damit du Operationen aufrufen kannst,

dann könntest du ein Color-Objekt farbe setzen, die dann auch mal auf Blau statt Schwarz gesetzt wird;
ein Variable String string1; der statt "10" dann auch mal "huhu" enthält,

alles ist möglich, Exemplarvariable, setter + getter, in paintComponent dann

g.setColor(farbe);
g.drawString("0",10,400);
g.drawString(string1,30,400);
 

gurke1509

Mitglied
mmh.. Das ist mir zu hoch :bahnhof:
Aber ich versuche mich trotzdem da mal rein zu arbeiten. Wird ja wohl nicht so schwer sein :D.
Trotzdem danke
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Umgang mit Graphics unklar : Erstellung u Uebergabe an Funktion Java Basics - Anfänger-Themen 18
M HILFE JPanel - Graphics Java Basics - Anfänger-Themen 1
H Eingabe tätigen bevor Graphics g Fenster öffnet Java Basics - Anfänger-Themen 5
I Java Klassen "Graphics" und "MouseEvent" kombinieren Java Basics - Anfänger-Themen 7
CptK Interface Bilder mit Graphics g zeichnen Java Basics - Anfänger-Themen 7
J Erste Schritte drawLine Methode der Graphics Klasse Java Basics - Anfänger-Themen 2
J GUI / Graphics Java Basics - Anfänger-Themen 2
H Graphics / repaint Java Basics - Anfänger-Themen 8
K Zwei Fragen zu Graphics/Graphics2D Java Basics - Anfänger-Themen 5
R Cast java.awt.Graphics Java Basics - Anfänger-Themen 7
Azazel (Anfängerhilfe) awt.Graphics Schwierigkeiten Java Basics - Anfänger-Themen 6
I Methoden public void paintComponent (Graphics g) Java Basics - Anfänger-Themen 4
B Erste Schritte Anzeige von Graphics Objekten einzeln aktualisieren Java Basics - Anfänger-Themen 1
S Farbige Lebensleiste mit Graphics? Java Basics - Anfänger-Themen 10
S Ein Graphics Obejct mehrmals mit denselben Eigenschaften zeichnen lassen?!?!? Java Basics - Anfänger-Themen 4
S G Graphics Java Basics - Anfänger-Themen 1
thet1983 g.Graphics löschen? Java Basics - Anfänger-Themen 1
M Probleme mit paint() aus java.awt.Graphics Java Basics - Anfänger-Themen 2
A EAN13 Font auf graphics g erzeugt Monospaces Java Basics - Anfänger-Themen 14
N Graphics to png Java Basics - Anfänger-Themen 10
N Methode draw(Graphics g) aufrufen Java Basics - Anfänger-Themen 6
Dogge Problem mit paint(Graphics g) im Applet Java Basics - Anfänger-Themen 13
J Problem mit paint(Graphics g) Java Basics - Anfänger-Themen 4
J Jtable änderung soll graphics aktualisieren Java Basics - Anfänger-Themen 4
J JAVA Graphics Java Basics - Anfänger-Themen 5
A Graphics Objekt verhält sich merkwürdig Java Basics - Anfänger-Themen 2
G DRUCKEN von z.B. eines JFrame über print(Graphics g) Java Basics - Anfänger-Themen 9
Maxim6394 Probleme mit Graphics Java Basics - Anfänger-Themen 7
W von Graphics in BufferedImage Java Basics - Anfänger-Themen 10
M OOP Graphics immer selbstbezihend Java Basics - Anfänger-Themen 12
K Problem mit Parameter von paint(Graphics g) Java Basics - Anfänger-Themen 3
T Transparente Bilder mit Graphics zeichnen Java Basics - Anfänger-Themen 17
H Probleme mit Graphics G Java Basics - Anfänger-Themen 2
M Schiebepuzzle: MouseListener und Graphics? Java Basics - Anfänger-Themen 6
J Graphics g Java Basics - Anfänger-Themen 4
H Probleme mit Graphics Java Basics - Anfänger-Themen 5
B MouseListener & Graphics Java Basics - Anfänger-Themen 10
M Graphics zeichnen Java Basics - Anfänger-Themen 2
F Graphics PDFBox Java Basics - Anfänger-Themen 9
M kurze Frage zu Graphics Java Basics - Anfänger-Themen 5
Luk10 Buch für Swing/Awt/Graphics Java Basics - Anfänger-Themen 4
M Java Graphics etc. Java Basics - Anfänger-Themen 2
M Concurrency und Graphics Java Basics - Anfänger-Themen 9
F Was ist Graphics g wirklich? Java Basics - Anfänger-Themen 5
J Klasse Graphics Nullpointerexception Java Basics - Anfänger-Themen 8
P Frage zu Graphics Java Basics - Anfänger-Themen 2
O graphics methode zeigt mein bild nicht an Java Basics - Anfänger-Themen 7
F Zweite Graphics-Methode wird nicht ausgeführt Java Basics - Anfänger-Themen 4
T rotes herz public void paint(Graphics g) Java Basics - Anfänger-Themen 2
G paintComponent(Graphics g) Java Basics - Anfänger-Themen 2
eQui Oberfläche mit Graphics zeichnen Java Basics - Anfänger-Themen 11
S Dicke bei Graphics Ovject einstellen Java Basics - Anfänger-Themen 2
V KSKB zum Verständnis von Graphics und paintComponent Java Basics - Anfänger-Themen 6
T Graphics von java.awt.Frame soll sich inhalt merken Java Basics - Anfänger-Themen 3
G Graphics-Object skalieren Java Basics - Anfänger-Themen 9
G Constructor & Graphics g Java Basics - Anfänger-Themen 5
F Frage zum Graphics Objekt Java Basics - Anfänger-Themen 3
D Instanz von Graphics in run() Java Basics - Anfänger-Themen 8
B Mouseevents und Graphics Java Basics - Anfänger-Themen 11
D Abstrakte Klasse Graphics Java Basics - Anfänger-Themen 3
W Verständisfrage zu Graphics Objekt Java Basics - Anfänger-Themen 3
P umwandeln von graphics nach image Java Basics - Anfänger-Themen 4
A Graphics g, AdjustmentEvent e Java Basics - Anfänger-Themen 5
Dilandau paint(Graphics g) { unbekannt in try{} / catch{} }? Java Basics - Anfänger-Themen 5
S Graphics Java Basics - Anfänger-Themen 11
Spandeli8 Erzeugte Objekte gegenüber Bildern hervorheben in Java Processing Java Basics - Anfänger-Themen 1
G Verkettete Liste - Neu erzeugte Elemente werden nicht ausgegeben Java Basics - Anfänger-Themen 5
V Launch4j erzeugte exe schmeisst trjanermeldung(( Java Basics - Anfänger-Themen 6
A Erzeugte Objekte sind nicht bekannt Java Basics - Anfänger-Themen 16
L zugreifen auf erzeugte Klasse unter static? Java Basics - Anfänger-Themen 5
6 Swing: Dynamisch erzeugte Objekte sind verschoben Java Basics - Anfänger-Themen 2
J referenz auf noch nicht erzeugte objekte? Java Basics - Anfänger-Themen 2
A Dynamsisch erzeugte JTextFields Java Basics - Anfänger-Themen 3
W Gleichzeitiges ersetzen mehrerer Strings Java Basics - Anfänger-Themen 7
R Datentypen Das Verhalten von Strings als Datentypen Java Basics - Anfänger-Themen 7
N Nachkommastellen von Strings Java Basics - Anfänger-Themen 3
T Strings unveränderlich???? Java Basics - Anfänger-Themen 22
B Alle Strings bis zu einer Maimallänge aufzählen, die Bedingung erfüllen Java Basics - Anfänger-Themen 13
S Die durchschnittliche Länge der Strings Java Basics - Anfänger-Themen 11
M Operatoren Strings mit Vergleichsoperatoren, funktioniert das? Java Basics - Anfänger-Themen 9
S Variablen Letzte Zeile eines Strings entfernen Java Basics - Anfänger-Themen 1
D Strings aus Excel-Datei einlesen Java Basics - Anfänger-Themen 2
P9cman Tipps für Rekursive Aufgaben mit Strings oder allgemein Java Basics - Anfänger-Themen 2
sserio StringBuilder und Strings Java Basics - Anfänger-Themen 8
J Größe eines Strings in Pixel Java Basics - Anfänger-Themen 18
schredder Strings und reguläre Ausdrücke - Methode mit return string.matches Java Basics - Anfänger-Themen 5
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
N Strings verpflechten Java Basics - Anfänger-Themen 4
G Strings auf Gleichheit prüfen - Aufgabe vom Prof. Java Basics - Anfänger-Themen 5
A 2 Strings vergleichen in einer methode wenn man mit Globalen variablen arbeitet Java Basics - Anfänger-Themen 12
L Strings aneinanderhängen Java Basics - Anfänger-Themen 2
M Strings vergleichen Java Basics - Anfänger-Themen 10
Nerdinfekt BMI Rechner, fehler beim Zurückgeben des Strings? Java Basics - Anfänger-Themen 2
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
S 2 Strings mit Equals vergleichen Java Basics - Anfänger-Themen 11
Q Besitzen zwei Strings identische Buchstaben, nur in anderer Reihenfolge? Java Basics - Anfänger-Themen 10
marcooooo Separator zwischen allen Zeichen eines Strings einfügen Java Basics - Anfänger-Themen 29
C Ternärer Operator mit Strings Java Basics - Anfänger-Themen 3
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
P Verketten, Aneinanderreihen von Strings Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben