neuzeichnen von graphics nach minimierung oder ähnlichem

Status
Nicht offen für weitere Antworten.
H

housemusic

Gast
hallo,
ich habe folgendes problem
ich habe ein fenster, in dem ich einen graphen zusammenbasteln kann. doch sobald ich minimiere oder ein
aderes fenster überlagere und danach wegziehe, ist nur noch das bild des jlabels zu erkennen. wie kann ich das ändern?
ich habe bereits alle zu zeichnenen sachen in collections und einen knopf, um alles neu zu zeichnen, aber das ist ja nicht das gelbe vom ei.
wie macht man sowas ? (habe auch mit diversen listenern probiert, dass die aktion automatisch aufgerufen wird, aber das ist wohl von der laune meines pcs abhängig, wann er das macht und wann nicht)
also wie kriege ich meine graphicen ordentlich auf mein JLayeredFrame gebannt ?

mfg
stephan


foto des frames:


problemsz7.jpg
 

André Uhres

Top Contributor
Jede JComponent hat eine Methode "protected void paintComponent(Graphics g)".
Diese musst du überschreiben und auf das Graphics Objekt "g" zeichnen.
"paintComponent" wird vom System automatisch aufgerufen,
wenn die Komponente neu gezeichnet werden muss.
 
H

housemusic

Gast
sorry aber auf dem gebiet bin ich dann wohl noch anfänger.
ich hab die methode
Code:
public void paintKante(Graphics g, pKante pka)
	{
		g.drawLine(pka.getX1()+7, pka.getY1()+7, pka.getX2()+7, pka.getY2()+7);
		int xx=(pka.getX1()+pka.getX2())/2;
		int yy=(pka.getY1()+pka.getY2())/2;
		g.setColor(Color.BLUE);
		g.drawString(""+pka.getGewicht(), xx ,yy);
		g.setColor(Color.BLACK);
		
	}

und die wird im mouselistener aufgerufen


Code:
paintKante(Boden.getGraphics(), pka);

was genau muss ich jetzt tun, damit die bleiben? wie überschreib ich sowas was muss ich dazu machen ?

gruß
stephan
 

Wildcard

Top Contributor
Um mir erneute lange Erklärungen zu sparen warum das falsch ist, such einfach mal hier nach getGraphics
 

André Uhres

Top Contributor
housemusic hat gesagt.:
..was genau muss ich jetzt tun, damit die bleiben? wie überschreib ich sowas was muss ich dazu machen ? ..
Überschreiben geht so:
Code:
       boden = new JLabel(){
            protected void paintComponent(final Graphics g) {
                super.paintComponent(g);
                paintKante(g, pka);
            }
        };
Um "paintKante" aus einer anderen Methode aufzurufen:
Code:
boden.repaint();
Und hier ein kleines Demoprogramm:
Code:
package paint;
/*
 * GrafikDemo.java
 */
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import javax.swing.*;
public class GrafikDemo extends JFrame {
    private JLabel boden;
    private pKante pka = new pKante();
    public GrafikDemo() {
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setSize(400,300);
        setResizable(false);
        setLocationRelativeTo(null);
        boden = new JLabel(){
            protected void paintComponent(final Graphics g) {
                super.paintComponent(g);
                paintKante(g, pka);
            }
        };
        initBoden();
        add(boden);
    }
    private void initBoden() {
        URL url = null;//url für das Hintergrundbild
        try {
            url = new URL("http://www.bigfoto.com/themes/nature/sky/clouds-v7u2.jpg");
        } catch (MalformedURLException ex) {
            ex.printStackTrace();
        }
        boden.setIcon(new ImageIcon(url));
        JButton button = new JButton("TEST");
        button.setBounds(150, 240, 100, 25);
        boden.add(button);
        button.addActionListener(new ActionListener() {
            public void actionPerformed(final ActionEvent e) {
                doButtonAction(e);
            }
        });
    }
    private void doButtonAction(final ActionEvent e){
        System.out.println("doButtonAction");
        pka.x1 = 200;
        boden.repaint();
    }
    public void paintKante(final Graphics g, final pKante pka) {
        g.drawLine(pka.getX1()+7, pka.getY1()+7, pka.getX2()+7, pka.getY2()+7);
        int xx=(pka.getX1()+pka.getX2())/2;
        int yy=(pka.getY1()+pka.getY2())/2;
        g.setColor(Color.BLUE);
        g.drawString(""+pka.getGewicht(), xx ,yy);
        g.setColor(Color.BLACK);
    }
    public static void main(final String args[]) {new GrafikDemo().setVisible(true);}
}
class pKante{
    public int x1 = 0;
    public int getX1() {return x1;}
    public int getY1() {return 150;}
    public int getX2() {return 100;}
    public int getY2() {return 100;}
    public int getGewicht() {return 50;}
}
Tipp: um Verwechslungen auszuschliessen, werden normalerweise die Variablennamen
immer mit einem kleinem Anfangsbuchstaben geschrieben (Boden->boden) und die Klassennamen immer
mit einem grossem Anfangsbuchstaben (pKante->PKante).
 
G

Guest

Gast
ja das sagt mir eclipse auch immer ^^ muss ich mir mal angewöhnen.
erstmal vielen dank für die antwort, das habe ich soweit alles hinbekommen und gut verstanden.

aaabber jetzt kommts :roll:

ich will ja auf den boden nicht nur linien zeichnen, sondern auch die knotenpunkte und die namen.

Code:
boden = new JLabel(){
            protected void paintComponent(final Graphics g) {
                super.paintComponent(g);
                paintKante(g, pka);
            }
        };

du rufst jetzt boden.repaint() auf aber wie kann ich da zwischen punkten, verbindungen und namen unterscheiden ?
ich hab in der oberfläche bis jetzt so checkboxen gehabt, und je nach dem, welche ich aktiviert hatte, hat er was anderes gemalt. so, wie ich das jetzt verstanden hab, is das jetzt futsch ?
 

André Uhres

Top Contributor
Anonymous hat gesagt.:
..je nach dem, welche ich aktiviert hatte, hat er was anderes gemalt.
so, wie ich das jetzt verstanden hab, is das jetzt futsch ?
All den Code, der etwas zeichnen soll , tust du ebenfalls in die Methode "paintComponent",
und schon ist die Welt wieder in Ordnung :D .
 
G

Gast

Gast
ja das habe ich schon probiert. aber dann kommt immer alles auf einmal und ich hab auch keine globale kante und auch keine globalen knoten. muss die pKante global sein ?
na ja jedenfalls rufst du repaint() auf und dann kommt alles auf einmal, aber was is, wenn ich jetzt nur einen punkt machen will oder nur einen strich von a nach b ?

gruß
stephan
 

André Uhres

Top Contributor
Gast hat gesagt.:
ja das habe ich schon probiert. aber dann kommt immer alles auf einmal ..
Was redest du denn da? Das war doch der Sinn der ganzen Operation, oder was?
Ich zitiere: "neuzeichnen von graphics nach minimierung oder ähnlichem".
Da muss doch immer alles auf einmal kommen :?
 
G

Gast

Gast
ach so ist das gemeint!!! :D na ja ich dachte, ich würde nur fehler machen beim zeichnen.
also ich zeichne ganz normal wie sonst?
also
mouselistener click
{ if (selected mach knoten) mach einen knoten k(x,y), zeichne (knoten k, boden.getgraphics)
}

und dann soll ich in den windowlistener die methode packen ?
na ich werd das jetzt mal testen!
glaub nich, dass das so geht aber mal probieren!
 
G

Guest

Gast
JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA DANKE DANKE !!!!!!!!!!!! ES GEEEHT :D :D :D
kann es manchmal schwer sein, das leichte im leben zu finden!

okay also als zusammenfassung, was ich bloß tun musste, um mein problem zu lösen,

public JLayeredPane boden=new JLayeredPane();
=>

Code:
public JLayeredPane boden=new JLayeredPane()
	{
		
		private static final long serialVersionUID = 1L;

		protected void paintComponent(final Graphics g) 
		{
            super.paintComponent(g);
            repaintAlles();
		}
		
	};


wobei repaintAlles() ne methode ist, die aus zwei collections alle möglichen dinge, die schon auf das feld gepackt wurden, ausliest und schreibt.

danke
-> problem gelöst
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Thallius JScrollPane Scrollpos setzen nach Neuzeichnen AWT, Swing, JavaFX & SWT 3
A Neuzeichnen bei AbstractAction AWT, Swing, JavaFX & SWT 4
A Swing JFrame neuzeichnen lassen, position neu berechnen lassen? AWT, Swing, JavaFX & SWT 9
M GUI muss updaten und neuzeichnen AWT, Swing, JavaFX & SWT 3
J JavaFX Automatisches Neuzeichnen ("Repaint") abstellen. AWT, Swing, JavaFX & SWT 10
E Swing Neuzeichnen von JPanel AWT, Swing, JavaFX & SWT 4
V automatisches neuzeichnen verhindern AWT, Swing, JavaFX & SWT 3
P problem mit neuzeichnen AWT, Swing, JavaFX & SWT 2
L Beim Neuzeichnen einer Swing GUI kurz Schwarzer Hintergrund AWT, Swing, JavaFX & SWT 8
D Jpanel neuzeichnen AWT, Swing, JavaFX & SWT 5
K AWT Neuzeichnen unterbinden AWT, Swing, JavaFX & SWT 13
N Swing MainWindow(JFrame) aktualisieren(neuzeichnen) repaint AWT, Swing, JavaFX & SWT 4
P Swing JTextArea - beim neuzeichnen bleibt manchmal weißer Kasten AWT, Swing, JavaFX & SWT 10
S Swing JFrame neuzeichnen - bleibt grau AWT, Swing, JavaFX & SWT 18
D jScrollPane - neuzeichnen AWT, Swing, JavaFX & SWT 4
S Probleme beim Neuzeichnen eines JLabels AWT, Swing, JavaFX & SWT 6
R Bestimmte Komponenten vom Neuzeichnen abhalten AWT, Swing, JavaFX & SWT 2
G SWT - Neuzeichnen AWT, Swing, JavaFX & SWT 2
P Zeichnen in Canvas und Neuzeichnen AWT, Swing, JavaFX & SWT 3
J NeuZeichnen eines JXTitledPanels? AWT, Swing, JavaFX & SWT 4
A Komponente entfernen. Kein neuzeichnen nach validate() AWT, Swing, JavaFX & SWT 2
B Swing GUI neuzeichnen AWT, Swing, JavaFX & SWT 5
N Flackern beim neuzeichnen von JPanel AWT, Swing, JavaFX & SWT 19
W Problem beim neuzeichnen eines Rechteckes (SWT) AWT, Swing, JavaFX & SWT 2
M drawLine() in JPanel hinzufügen ohne Neuzeichnen AWT, Swing, JavaFX & SWT 3
A Null pointer exception beim Neuzeichnen AWT, Swing, JavaFX & SWT 4
R Neuzeichnen eines JFrame mit repaint AWT, Swing, JavaFX & SWT 3
G JScrollPane scrollt nach Neuzeichnen von selber AWT, Swing, JavaFX & SWT 2
S neuzeichnen AWT, Swing, JavaFX & SWT 4
T JLabel neuzeichnen nach überdecken durch andere Fenster AWT, Swing, JavaFX & SWT 5
A Problem beim Neuzeichnen AWT, Swing, JavaFX & SWT 2
S AWT: Panel durch anderes Panel ersetzen. Neuzeichnen-Problem AWT, Swing, JavaFX & SWT 4
J Anklicken der Symbolleiste und Neuzeichnen des Buttons AWT, Swing, JavaFX & SWT 6
M Probleme mit JTable neuzeichnen! AWT, Swing, JavaFX & SWT 2
N Graphics Objekte scalen mit Veränderung des Bildschirms AWT, Swing, JavaFX & SWT 19
T Bild in ein graphics füllen AWT, Swing, JavaFX & SWT 2
volcanos Scrollen: JScrollPane mit Graphics g und Java-Fonts extends Frame ? AWT, Swing, JavaFX & SWT 5
DonBronson Java Graphics bewegbar machen (Drag&Drop) AWT, Swing, JavaFX & SWT 3
ExceptionOfExpectation MouseListener-Objekte zu den Graphics-Objekten einfügen AWT, Swing, JavaFX & SWT 3
R AWT Graphics initialisieren AWT, Swing, JavaFX & SWT 15
P JPanle, JFrame und Graphics AWT, Swing, JavaFX & SWT 2
R 2D-Grafik PNG Bild per Graphics auf JPanel AWT, Swing, JavaFX & SWT 9
B Graphics to Image AWT, Swing, JavaFX & SWT 3
T Swing Graphics auf Panel AWT, Swing, JavaFX & SWT 2
B Graphics -> Graphics2D etwas zu beachten? AWT, Swing, JavaFX & SWT 8
P ActionListener Graphics Einbauen AWT, Swing, JavaFX & SWT 0
J Swing Problem mit Graphics Methode AWT, Swing, JavaFX & SWT 4
R Swing Bewegung eines Graphics Objektes innerhalb eines JPanels funktioniert nicht richtig AWT, Swing, JavaFX & SWT 2
V Netbeans: TabbedPane, ScrollPane und Graphics AWT, Swing, JavaFX & SWT 4
V Graphics g - drawOval problem mit background AWT, Swing, JavaFX & SWT 1
M Graphics.fillOval AWT, Swing, JavaFX & SWT 1
javampir Sauberes Faden mit awt Graphics AWT, Swing, JavaFX & SWT 6
D 2D-Grafik Inhalt eines Graphics in anderes Graphics zeichnen.... AWT, Swing, JavaFX & SWT 3
X AWT Text der mit Graphics "drawString(...)" geschreiben wurde wieder löschen. AWT, Swing, JavaFX & SWT 6
C Zwei Ebenen in Graphics ? AWT, Swing, JavaFX & SWT 0
C Graphics Objekt in Zeitschleife zeichnen AWT, Swing, JavaFX & SWT 4
D Frage zu JFrame und Graphics AWT, Swing, JavaFX & SWT 4
I JavaFX Graphics Performance AWT, Swing, JavaFX & SWT 2
vodkaz Graphics aufrufen AWT, Swing, JavaFX & SWT 4
V 2D-Grafik Frage zum Graphics Objekt AWT, Swing, JavaFX & SWT 2
P 2D-Grafik NPE beim Zeichnen auf Graphics g AWT, Swing, JavaFX & SWT 8
M Graphics.drawImage von unten nach oben abbilden lassen AWT, Swing, JavaFX & SWT 6
F Probleme mit (Graphics g) II AWT, Swing, JavaFX & SWT 4
F Probleme mit (Graphics g) AWT, Swing, JavaFX & SWT 3
M JFrame Graphics.drawString Problem AWT, Swing, JavaFX & SWT 11
I Rechteck eines Graphics eines JPanels in einem anderen JPanel anzeigen AWT, Swing, JavaFX & SWT 7
antonbracke Multiplayer Shooter- Wie geht das mit Canvas & Graphics AWT, Swing, JavaFX & SWT 6
R Ankerpunkt bei Graphics AWT, Swing, JavaFX & SWT 3
R Fließende Bewegung von Graphics AWT, Swing, JavaFX & SWT 6
T AWT Graphics G Kein Text erscheint warum? AWT, Swing, JavaFX & SWT 12
L Graphics.drawImage() - Output-Größe entspricht nicht Parametern AWT, Swing, JavaFX & SWT 10
L Border verschwindet durch Graphics.drawImage() AWT, Swing, JavaFX & SWT 4
Furtano AWT paint braucht ein Graphics Objekt ? AWT, Swing, JavaFX & SWT 2
P "Graphics" wird nicht angezeigt AWT, Swing, JavaFX & SWT 11
L Graphics Objekt - aus anderer Klasse aufrufen / übergeben AWT, Swing, JavaFX & SWT 5
B Swing Zeilenumbruch in Graphics AWT, Swing, JavaFX & SWT 20
T Graphics zeichnet nicht AWT, Swing, JavaFX & SWT 2
T Applet graphics - zeichnen funktioniert nicht AWT, Swing, JavaFX & SWT 14
R Graphics-Object speichern AWT, Swing, JavaFX & SWT 4
S Zeichnen mit java.awt.Graphics AWT, Swing, JavaFX & SWT 6
D Graphics zeichnen AWT, Swing, JavaFX & SWT 6
M Graphics auf JFrame Koordinatensystem AWT, Swing, JavaFX & SWT 3
T Graphics Ersetzend Zeichnen AWT, Swing, JavaFX & SWT 6
S Unterscheiden ob ein Graphics-Objekt von einer JComponent oder einem BufferedImage kommt..? AWT, Swing, JavaFX & SWT 4
Developer_X Swing Auf ein BufferedImage mit Graphics/Graphics2D zeichnen AWT, Swing, JavaFX & SWT 6
D Erzeugen eines leeren Graphics-Objektes AWT, Swing, JavaFX & SWT 7
B Anzeigefehler in GridBagLayout durch paintComponent(Graphics g) AWT, Swing, JavaFX & SWT 3
A AWT AWT Panelfenster mit Graphics kombinieren AWT, Swing, JavaFX & SWT 7
T Graphics Parameterübergabe AWT, Swing, JavaFX & SWT 3
K Graphics.drawImage() sehr schnell AWT, Swing, JavaFX & SWT 5
M Graphics-Objekt aktualisiert sich nicht AWT, Swing, JavaFX & SWT 2
N paintComponent für Graphics ansprechen AWT, Swing, JavaFX & SWT 2
M Graphics.drawImage verlangsamt sich plötzlich AWT, Swing, JavaFX & SWT 15
S Swing AWT (graphics (g)) AWT, Swing, JavaFX & SWT 27
E einfache Frage zu paintComponent und Graphics AWT, Swing, JavaFX & SWT 7
B Swing Tooltips auf Graphics AWT, Swing, JavaFX & SWT 8
Ä Graphics-Komponente auf JPanel wird nicht angezeigt AWT, Swing, JavaFX & SWT 4
S Applet mit Graphics dynamisch vergrößern AWT, Swing, JavaFX & SWT 3
T Dialog ohne Frame, direktes paint in graphics AWT, Swing, JavaFX & SWT 5
T Swing Component in Graphics zeichnen AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben