grafik in jpanel wird nicht neugezeichnet

Status
Nicht offen für weitere Antworten.

tenim

Mitglied
hallo,

habe ein problem, dan dem ich jetzt schon 2 tage sitze.

also: ich hab ein jframe mit mehreren objekten (combobox,label,eingabefelder...) drin und einem jpanel mit rahmen und fixer grösse. dort zeige ich ein verkleinertes vorschaubild einer grafik an (bilddatenbank). das vorschaubild kann verschiedene grössen haben und wird deshalb im panel immer zentriert dargstellt. das klappt auch alles.

aber, wenn ein ein fenster eines anderen programmes mein fenster verdeckt(mein fenster wird inaktiv) und ich es danach wieder über alt-tab oder durch anklicken in der taskleiste aktiviere, wird die grafik nicht neu gezeichnet.
wenn ich das fenster durch direktes anklicken wieder aktiviere schon.
ich zeichne übrigens beim auftreten des windowlistener-events "windowActivated" die grafik neu.
er geht auch beim aktivieren des fensters in die funktion und führt den zeichenbefehl aus, ich sehe aber trotzdem nichts.
ich denke, das er nebenbei auch den ganzen frame neuzeichnet und damit danach meine vorher fertig gezeichnet grafik mit dem zeichnen des panels überschreibt.

gibts da eine lösung? kann ich durch irgenteinen listener informiert werden, wenn der den kompletten jframe fertig
geupdatet/gezeichnet hat, um dann meine grafik zu malen?
 

Wildcard

Top Contributor
Ich vermute mal du zeichnest falsch bzw. hast die falschen Methoden überschrieben. Zeig mal etwas Code.
 

tenim

Mitglied
das ist der inhalt der funktion, die beim zeichnen aufgerufen wird:


Code:
int	vorschauGroesse[]	=Konfiguration.gebeBildvorschauGroesse();
		
	
	Graphics gr= PanelBildvorschau.getGraphics();
	gr.setColor(Konfiguration.gebeFensterHintergrundfarbe());		// zeichenfarbe=hintergrundfarbe
	gr.fillRect(2,2,vorschauGroesse[0]-4,vorschauGroesse[1]-4);		// hintergrund des vorschaupanels löschen
	gr.drawImage(vorschauBild,(3+vorschaubildZeichenstart_X),(3+vorschaubildZeichenstart_Y),null);

PanelBildvorschau ist ein JPanel-objekt und vorschauBild ein image.objekt. wie gesagt, er zeichnet das bild ja, nur es wird nicht richtig neugezeichnet.
 
S

SlaterB

Gast
macht ruft keine Funktionen zum Zeichen auf, man rut nicht getGraphics() auf,

man ruft repaint() auf und überschreibt paintComponent(),

diese Funktion wird nämlich auch beim Resizen gerufen und kann dann korrekt zeichnen
 

tenim

Mitglied
das hab ich auch schon probiert: paintComponent() überschreiben und repaint() aufrufen. ging trotzdem nicht.

und wieso ruft man nicht GetGraphics() auf? und resizen wollte ich doch garnicht.
 

Wildcard

Top Contributor
tenim hat gesagt.:
und wieso ruft man nicht GetGraphics() auf? und resizen wollte ich doch garnicht.
Wildcard hat gesagt.:
Das gab's schon x-mal.
Hier eine Kurzzusammenfassung:
-gespeicherte Graphics Objekte verlieren nach einiger Zeit ihre Wirking (mit getGraphics "geklaute" Graphics Objekte werden häufig auch in einer Variablen gespeichert)
-mit getGraphics wird aktiv gezeichnet, Swing zeichnet aber passiv
-die Anwendung verhält sich inkonsistent bei minimieren, Verdeckung durch andere Fenster, maximieren, vergrößern

In Swing wird (sofern man kein Active-Rendering betreibt) immer nur mit repaint ein Hint ans Framework zum neuzeichnen gegeben und ein bestehendes Model visualisiert. Alles andere passt nicht in die Swing Architektur.
getGraphics wird häufig als bequeme Abkürzung gebraucht wenn man noch nicht weiß wie alles funktioniert. Dann tauchen die ersten Probleme auf und man muss alles umschreiben.
In 99% aller Fälle hat getGraphics in einer Swing Applikation nichts verloren.
 
S

SlaterB

Gast
> paintComponent() überschreiben und repaint() aufrufen. ging trotzdem nicht.

nun, zumindest weißt du nun, dass dies der Weg ist,
der funktionieren MUSS,

alles weitere ist dann ein Fehler in deinem Code,
da musst du schon ins Detail gehen wenn dir jemand was dazu sagen soll

> und wieso ruft man nicht GetGraphics() auf? und resizen wollte ich doch garnicht.

bei paintComponent(Graphics g) kommt doch ein Graphics-Objekt als Parameter, wozu dann getGraphics() aufrufen?

ergo: tut man nicht, zumindest nicht als Anfänger wenn man in einem Forum wie diesem Fragen wie diese stellt,
dass es für irgendwelche exotischen Anwedunden irgendwann mal nützlich sein kann mag sein


Resizen, Verdecken, Minimieren, Maximieren, ist doch alles das gleiche,
das Betriebssystem muss es neu zeichnen, nur darauf kommt es an

> ich zeichne übrigens beim auftreten des windowlistener-events "windowActivated" die grafik neu.

unnötig, paintComponent wird AUTOMATISCH bei solchen Ereignissen gerufen,
sorge dafür, dass die geht, dann läuft alles
 

tenim

Mitglied
danke an alle! jetzt geht es endlich! muss ich in zukunft aufpassen, GetGraphics() nicht mehr zu benutzen.
komisch nur, warum es vorhin nicht ging.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S 3D-Grafik 3d Grafik auf einem JPanel oder im JScrollPane AWT, Swing, JavaFX & SWT 1
Kenan89 Grafik und Text in JPanel anzeigen AWT, Swing, JavaFX & SWT 8
D Swing Grafik in JPanel anzeigen. AWT, Swing, JavaFX & SWT 3
P JPanel mit Grafik von HDD über JTree AWT, Swing, JavaFX & SWT 10
S Update von Grafik auf JPanel AWT, Swing, JavaFX & SWT 2
L Komponente und Grafik gleichzeitig auf JPanel zeichnen AWT, Swing, JavaFX & SWT 11
I Libraries für AWT für andere Grafik-Frameworks tauglich machen AWT, Swing, JavaFX & SWT 6
G 2D-Grafik Grafik in zwei verschiedenen Fenstern gleichzeitig zeichnen AWT, Swing, JavaFX & SWT 9
R Grafik per JButton laden und austauschen lassen AWT, Swing, JavaFX & SWT 14
M Umwandlung in den HSV-Farbraum lässt die Grafik pixelig werden AWT, Swing, JavaFX & SWT 8
S 2D-Grafik Winkelberechnungen auf 2D Grafik AWT, Swing, JavaFX & SWT 2
E Grafik karte erkennen AWT, Swing, JavaFX & SWT 3
S JavaFX Java Custom Node Grafik zurückgeben AWT, Swing, JavaFX & SWT 2
D Swing JCombobox Aktion löscht Grafik AWT, Swing, JavaFX & SWT 1
K Grafik in JFrame einpassen AWT, Swing, JavaFX & SWT 3
C Nach Aufruf von anderer Klasse streikt Grafik AWT, Swing, JavaFX & SWT 1
T AWT Grafik"Array" einzelne Elemente verschieben AWT, Swing, JavaFX & SWT 1
Sanni94 JavaFX Kann man eine Grafik in einen Text einbinden? AWT, Swing, JavaFX & SWT 2
S Höhendaten in einer Grafik ausgeben AWT, Swing, JavaFX & SWT 2
S Grafik: Programm kommt nicht zur paint()-Methode AWT, Swing, JavaFX & SWT 6
S Grafik in einer Klassen einfügen/hinzufügen AWT, Swing, JavaFX & SWT 1
C 2D Grafik ein Bild soll permanent durchlaufen AWT, Swing, JavaFX & SWT 2
F AWT Grafik wird nicht richtig aktualisiert AWT, Swing, JavaFX & SWT 2
J JTabbedPane Grafik unterhalb der Tabs AWT, Swing, JavaFX & SWT 3
F Grafik hängt sich auf AWT, Swing, JavaFX & SWT 20
S LookAndFeel GUI-Grafik AWT, Swing, JavaFX & SWT 5
J Verschwommene Grafik AWT, Swing, JavaFX & SWT 4
C LayoutManager Grafik soll nicht im GridLayout Skalieren AWT, Swing, JavaFX & SWT 3
F Grafik mit Buttons versehen AWT, Swing, JavaFX & SWT 8
C Grafik Taschenrechner AWT, Swing, JavaFX & SWT 5
J Grafik (Kreis) schneller bewegen? AWT, Swing, JavaFX & SWT 6
D Fenster mit Grafik überlappen AWT, Swing, JavaFX & SWT 3
Maxim6394 Rotation einer Grafik in swing AWT, Swing, JavaFX & SWT 13
W Grafik von JFrame korrekt speichern AWT, Swing, JavaFX & SWT 7
S Grafik Fehler AWT, Swing, JavaFX & SWT 15
M Swing JLabel (mit einer Grafik) aktualisieren AWT, Swing, JavaFX & SWT 2
D 2D-Grafik Problem beim Drucken eines Grafik-Objekts AWT, Swing, JavaFX & SWT 2
Daniel_L Grafik erstellen, drin zeichnen und dann speichern AWT, Swing, JavaFX & SWT 2
D Grafik über JPanels hinweg verschieben AWT, Swing, JavaFX & SWT 2
C Grafik von main aus aufrufen AWT, Swing, JavaFX & SWT 13
O Swing Label(bzw. Grafik) verdekt von anderm Label AWT, Swing, JavaFX & SWT 2
T rekursive Grafik AWT, Swing, JavaFX & SWT 5
I 2D-Grafik Problem mit schreiben von Text auf eine Grafik AWT, Swing, JavaFX & SWT 7
F Swing Framework gesucht (Swing, Chart, "Scheduling" Grafik) AWT, Swing, JavaFX & SWT 2
S Pacman-Grafik AWT, Swing, JavaFX & SWT 23
N Eigener Grafik Editor mit fehlerhafter Anzeige AWT, Swing, JavaFX & SWT 4
lordcarlos Dynamische und interaktive grafik AWT, Swing, JavaFX & SWT 5
D Systemmodale Grafik AWT, Swing, JavaFX & SWT 10
J Geladene Grafik in ImageIcon auf Panel fest positionern. AWT, Swing, JavaFX & SWT 8
W Grafik aktualisieren AWT, Swing, JavaFX & SWT 5
S Swing Zugriff auf Polyline in Grafik AWT, Swing, JavaFX & SWT 4
A Swing Bei größe verändern des Fensters Grafik weg AWT, Swing, JavaFX & SWT 3
C gute Grafik-Bibliotheken gesucht AWT, Swing, JavaFX & SWT 6
D JFormattedTextfield um Grafik erweitern AWT, Swing, JavaFX & SWT 15
O Grafik wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
S 2D-Grafik beeinflussen durch Scrollbalken AWT, Swing, JavaFX & SWT 2
A Grafik aus MIME-kodiertem Inhalt erzeugen AWT, Swing, JavaFX & SWT 2
T (WACOM) Grafik Tablet abfragen AWT, Swing, JavaFX & SWT 3
S Button mit Grafik versehen AWT, Swing, JavaFX & SWT 5
D Grafik bearbeiten AWT, Swing, JavaFX & SWT 11
M Ich habe Werte und Brauche Grafik! AWT, Swing, JavaFX & SWT 3
M Grafik flexibel an berechneten Koordinaten positionieren AWT, Swing, JavaFX & SWT 4
M dynamische Grafik in JFrame einbetten AWT, Swing, JavaFX & SWT 2
G Transparente Grafik über JMF Video zeichnen AWT, Swing, JavaFX & SWT 2
I Grafik in Text umwandeln AWT, Swing, JavaFX & SWT 11
G Grafik auf mehrere Methoden/Klassen zerlegen AWT, Swing, JavaFX & SWT 2
G Grafik in Button einbinden AWT, Swing, JavaFX & SWT 3
M Grafik in JFrame in Kombination mit Steuerelementen AWT, Swing, JavaFX & SWT 2
F Zellen über eine Grafik legen AWT, Swing, JavaFX & SWT 7
S Grafik Farbwert verändern? AWT, Swing, JavaFX & SWT 8
D Farbe einer Grafik über den Cursor abfragen AWT, Swing, JavaFX & SWT 6
G Keine Anzeige von Grafik bei externem paintComponent-Aufruf AWT, Swing, JavaFX & SWT 2
S Popup auf Grafik AWT, Swing, JavaFX & SWT 18
J Grafik "sichtbar" verschieben AWT, Swing, JavaFX & SWT 2
G Grafik auf JComponent ohne Überschreiben von Paint-Methoden AWT, Swing, JavaFX & SWT 4
G Grafik erzeugen: eine Art Zustandsgraph eines Automaten AWT, Swing, JavaFX & SWT 7
P grafik in JScrollPanel AWT, Swing, JavaFX & SWT 5
D AppletCode als JAR aus JSP benutzen und als Grafik speichern AWT, Swing, JavaFX & SWT 2
S Auf einem JTabbedPane eine Grafik zeichnen AWT, Swing, JavaFX & SWT 11
W Grafik in JLabel aktualisieren AWT, Swing, JavaFX & SWT 4
S Tooltip mit Grafik AWT, Swing, JavaFX & SWT 2
D Visualisierung einer Selektion in einer Grafik. AWT, Swing, JavaFX & SWT 7
P Vektor-Grafik im XML-Format speichern AWT, Swing, JavaFX & SWT 39
P Grafik auf Button AWT, Swing, JavaFX & SWT 3
E Einträge der JComboBox werden durch Grafik verdeckt AWT, Swing, JavaFX & SWT 11
T swing - grafik schrittweise ausgeben ohne repaint() AWT, Swing, JavaFX & SWT 2
P Zwei JPanel übereianderlegen AWT, Swing, JavaFX & SWT 14
XWing Basic JPanel mit 2 Buttons beutzen. AWT, Swing, JavaFX & SWT 10
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
G JPanel mit JButtons und Bilder AWT, Swing, JavaFX & SWT 5
N AWT JPanel zu Jframe hinzufügen AWT, Swing, JavaFX & SWT 2
M clear JPanel before repainting AWT, Swing, JavaFX & SWT 1
B ImageIcon auf JPanel austauschen AWT, Swing, JavaFX & SWT 3
T Swing Reload JPanel + darin liegende ProgressBar AWT, Swing, JavaFX & SWT 9
P Swing Mehrere JLabels mit ImageIcon in JPanel lesen AWT, Swing, JavaFX & SWT 1
E JScrollPane mit JPanel verbinden AWT, Swing, JavaFX & SWT 1
F JPanel Celleditor AWT, Swing, JavaFX & SWT 8
B JPanel-Inhalte inkl. JTextarea zoomen? AWT, Swing, JavaFX & SWT 3
B Mit ContentPane werden Komponenten angezeigt, mit SplitPane, JPanel nicht? AWT, Swing, JavaFX & SWT 6
CptK Funktionsgraphen effizient zeichnen und nur Teile von JPanel erneuern AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben