repaint()-Problem

Status
Nicht offen für weitere Antworten.

Smaug

Neues Mitglied
Hallo!

Ich versuche mich seit kurzem mit Swing und bin dabei auf folgendes Problem gestoßen. Das Programm an sich macht nicht viel Sinn, aber ich wollte eigentlich ja auch nur mal Swing im Zusammenhang mit Threading testen: Ich habe mir einige Threads erstelllt, die etwas berechnen und dann einen Event auslösen. Dieser Event soll dann in einem JPanel die Änderung der Hintergrundfarbe bewirken. Das Problem dabei ist, das erst nachdem ich das Fenster in der Größe geändert hab, sich der Hintergrund zu ändern beginnt. Hier mal die Codeschnipsel:

Event class...
Code:
	//	 Create the listener list
	protected javax.swing.event.EventListenerList listenerList =
								new javax.swing.event.EventListenerList();
	DisplayEvent dis;

        //...
	     //fire fireDisplayEvent(dis)
        //...

        // This methods allows classes to register for MyEvents
        public synchronized void addDisplayListener(DisplayListener listener) {
        listenerList.add(DisplayListener.class, listener);
        }

        // This methods allows classes to unregister for MyEvents
        public synchronized void removeDisplayListener(DisplayListener listener) {
                           listenerList.remove(DisplayListener.class, listener);
    }

    // This private class is used to fire MyEvents
    void fireDisplayEvent(DisplayEvent evt) {
        Object[] listeners = listenerList.getListenerList();
        // Each listener occupies two elements - the first is the listener class
        // and the second is the listener instance
        for (int i=0; i<listeners.length; i+=2) {
            if (listeners[i]==DisplayListener.class) {
                ((DisplayListener)listeners[i+1]).displayEventOccurred(evt);
            }
        }
    }

Swing class...
Code:
@SuppressWarnings("serial")
public class Visualize extends JFrame implements DisplayListener {
	
	VecJPanel pan;
	
	public Visualize() {
		super("timestamp demo...");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
		setSize(600, 400);
		pan = new VecJPanel();
		add(pan);
	}

	public void displayEventOccurred(DisplayEvent evt) {
		pan.repaint();
	}
	
...
}

@SuppressWarnings("serial")
class VecJPanel extends JPanel {
	Color[] colors = {Color.white, Color.black, Color.red,
			Color.yellow, Color.blue, Color.cyan, Color.darkGray,
			Color.green, Color.magenta, Color.pink};
	
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		int i = (int)(Math.random()*10);
		setBackground(colors[i]);
	}
}

Hat jemand einen Tipp? Ich verzweifle so langsam.... :(
 
B

Beni

Gast
Wieso setzt du die Farbe nicht in "displayEventOccured"? Jetzt wird erst gezeichnet, dann die Farbe gesetzt...

Btw.: die "paint"-Methoden sollten ausschliesslich zeichnen, die Logik gehört da nicht rein.
 

André Uhres

Top Contributor
Smaug hat gesagt.:
..Threads erstelllt, die etwas berechnen und dann einen Event auslösen. Dieser Event soll dann in einem JPanel die Änderung der Hintergrundfarbe bewirken..
Code:
//package schnipsel4;
/*
 * Visualize.java
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Visualize extends JFrame implements ActionListener{
    private JPanel panel;
    private Timer timer;
    private Color[] colors = {Color.white, Color.black, Color.red,
    Color.yellow, Color.blue, Color.cyan, Color.darkGray,
    Color.green, Color.magenta, Color.pink};
    public Visualize() {
        super("timestamp demo...");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(600, 400);
        panel = new JPanel();
        add(panel);
        setVisible(true);
        timer = new Timer(2000, this);
        timer.start();
    }
    public static void main(String[] args){new Visualize();}
    public void actionPerformed(ActionEvent e) {
        panel.setBackground(colors[(int)(Math.random()*10)]);
    }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Problem: repaint() - Schleife AWT, Swing, JavaFX & SWT 3
B Swing Repaint Problem - mal wieder AWT, Swing, JavaFX & SWT 5
Ernesto95 AnimationLoop - Problem bei Aufruf von repaint AWT, Swing, JavaFX & SWT 6
P EDT Problem? Kein Aufruf der repaint Methode AWT, Swing, JavaFX & SWT 6
kodela Problem mit repaint() AWT, Swing, JavaFX & SWT 3
H repaint()-Problem - 50% CPU-Auslastung AWT, Swing, JavaFX & SWT 4
T repaint() Problem AWT, Swing, JavaFX & SWT 2
K Jpanel repaint problem (Fullscreen) AWT, Swing, JavaFX & SWT 5
E AWT Problem mit Repaint (in Loop oder Timer) AWT, Swing, JavaFX & SWT 3
J Swing Verständnis-Problem repaint(int x,int y,int width,int height) AWT, Swing, JavaFX & SWT 3
J [gelöst] repaint problem AWT, Swing, JavaFX & SWT 2
M problem mit repaint()-Methode[gelöst] AWT, Swing, JavaFX & SWT 8
G problem mit threads/repaint ! AWT, Swing, JavaFX & SWT 2
D Problem mit Netbeans und repaint() AWT, Swing, JavaFX & SWT 5
E Problem mit repaint() AWT, Swing, JavaFX & SWT 11
K Problem mit JLabel, Rechteck, repaint() ;) AWT, Swing, JavaFX & SWT 2
K Problem repaint()->paintComponent AWT, Swing, JavaFX & SWT 9
M Problem bei Repaint von Panels AWT, Swing, JavaFX & SWT 2
L Swing repaint problem AWT, Swing, JavaFX & SWT 7
B Problem bei repaint AWT, Swing, JavaFX & SWT 5
V repaint problem AWT, Swing, JavaFX & SWT 12
A Repaint-Problem AWT, Swing, JavaFX & SWT 4
S Repaint()-Problem im GBL? AWT, Swing, JavaFX & SWT 5
S paint/repaint problem mit awt/swing? AWT, Swing, JavaFX & SWT 2
L repaint()-Problem AWT, Swing, JavaFX & SWT 18
D Repaint Funktioniert nicht AWT, Swing, JavaFX & SWT 2
D JUNG Repaint function does not work AWT, Swing, JavaFX & SWT 2
E repaint Probleme AWT, Swing, JavaFX & SWT 13
G listener repaint() - verschiedene Darstellung AWT, Swing, JavaFX & SWT 24
ExceptionOfExpectation Textdarstellung auf einem Canvas mit Hilfe von repaint(); AWT, Swing, JavaFX & SWT 6
J actionperformed wird nicht aufgerufen/ repaint() AWT, Swing, JavaFX & SWT 6
L Swing repaint() ruft paintComponent(g1d) nicht auf AWT, Swing, JavaFX & SWT 12
G Repaint wird nicht durchgeführt AWT, Swing, JavaFX & SWT 8
I Swing Verhindern, dass repaint() kaskadiert AWT, Swing, JavaFX & SWT 6
ms_cikar Update swingUtilities Repaint in der Schleife AWT, Swing, JavaFX & SWT 3
T Swing Probleme mit repaint() bzw. JScrollPane AWT, Swing, JavaFX & SWT 7
N Swing JButtons werden nach repaint() doppelt dargestellt AWT, Swing, JavaFX & SWT 12
K Methode repaint() AWT, Swing, JavaFX & SWT 1
B Swing Wann brauche ich repaint() ? AWT, Swing, JavaFX & SWT 1
javampir Swing repaint in JavaFX Anwendung AWT, Swing, JavaFX & SWT 3
A repaint(); AWT, Swing, JavaFX & SWT 9
J Swing ungewünschter Nebeneffekt bei der repaint() Methode AWT, Swing, JavaFX & SWT 3
S 2D-Grafik repaint()-Aufruf. Und nichts geschieht. AWT, Swing, JavaFX & SWT 5
Joew0815 JDialog repaint() funktioniert nicht wie gewünscht. AWT, Swing, JavaFX & SWT 2
P JPanel und Repaint AWT, Swing, JavaFX & SWT 5
J JavaFX Automatisches Neuzeichnen ("Repaint") abstellen. AWT, Swing, JavaFX & SWT 10
F JTable Repaint Issue AWT, Swing, JavaFX & SWT 1
N Observer: update ruft nicht repaint auf AWT, Swing, JavaFX & SWT 0
C Repaint() funktioniert nicht in TabbedPanel AWT, Swing, JavaFX & SWT 5
S JList repaint AWT, Swing, JavaFX & SWT 1
L NullpointerException und Probleme mit repaint() AWT, Swing, JavaFX & SWT 11
M Repaint mittels Button richtig aufrufen klappt nicht AWT, Swing, JavaFX & SWT 1
B Repaint auf JFrame, JLabel und ImageIcon AWT, Swing, JavaFX & SWT 4
K 2D-Grafik Paint - Wie binde ich repaint ein? AWT, Swing, JavaFX & SWT 8
D repaint() klappt anders als vorgestellt AWT, Swing, JavaFX & SWT 15
R Repaint() in Schleifen, Threads AWT, Swing, JavaFX & SWT 13
P 2D-Grafik Gezielter Repaint einzelner Frames in Java-Game AWT, Swing, JavaFX & SWT 6
javampir Bei repaint nix los AWT, Swing, JavaFX & SWT 2
B Swing repaint() AWT, Swing, JavaFX & SWT 3
P 2D-Grafik repaint(); steigender RAM Verbauch AWT, Swing, JavaFX & SWT 6
Y KeyListener, GUI Thread, repaint AWT, Swing, JavaFX & SWT 7
S Applet Repaint AWT, Swing, JavaFX & SWT 3
M Programm hängt sich auf nachdem repaint() benutzt wurde AWT, Swing, JavaFX & SWT 2
R Swing Grafikfehler bei repaint AWT, Swing, JavaFX & SWT 2
N repaint() blockieren AWT, Swing, JavaFX & SWT 6
K canvas zeig nach repaint nichts an AWT, Swing, JavaFX & SWT 8
M Repaint() AWT, Swing, JavaFX & SWT 14
J Swing repaint, repaint, repaint AWT, Swing, JavaFX & SWT 8
M Applet repaint() verlangsamen AWT, Swing, JavaFX & SWT 7
R paintComponent malt bei repaint() Rahmen um Panel AWT, Swing, JavaFX & SWT 7
V Applet JApplet Flackern durch Repaint AWT, Swing, JavaFX & SWT 11
N Swing Funktion repaint() updated nicht AWT, Swing, JavaFX & SWT 5
F repaint reagiert nicht AWT, Swing, JavaFX & SWT 8
S AWT Probleme mit repaint() AWT, Swing, JavaFX & SWT 2
D Repaint()? Oder was??? AWT, Swing, JavaFX & SWT 5
M Eine nicht korrekte Darstellung bei repaint() warum? AWT, Swing, JavaFX & SWT 4
T 2D-Grafik Kreis "von Hand" zeichnen -> jedesmal repaint()? AWT, Swing, JavaFX & SWT 6
R validate(), repaint funktionieren nicht! AWT, Swing, JavaFX & SWT 7
B AWT Canvas überdeckt nach repaint() JComboBox-Optionen AWT, Swing, JavaFX & SWT 2
B Swing verschachteltes GUI: repaint() ändert mehr als nur gewünschte Component AWT, Swing, JavaFX & SWT 4
S validate(), invalidate(), repaint(),... Was kommt wann? AWT, Swing, JavaFX & SWT 5
M 2D-Grafik repaint() löscht altes Bild nicht AWT, Swing, JavaFX & SWT 2
J repaint() nicht richtig? AWT, Swing, JavaFX & SWT 6
R repaint erzwingen AWT, Swing, JavaFX & SWT 3
Zettelkasten repaint() von anderen Klassen aufrufen AWT, Swing, JavaFX & SWT 4
P repaint während Thread läuft AWT, Swing, JavaFX & SWT 9
D Repaint Frage, Design Frage AWT, Swing, JavaFX & SWT 2
N Swing MainWindow(JFrame) aktualisieren(neuzeichnen) repaint AWT, Swing, JavaFX & SWT 4
A 2D-Grafik Repaint - Alternative? AWT, Swing, JavaFX & SWT 3
C JLabel, JTextArea, JScrollPane. repaint(); ? AWT, Swing, JavaFX & SWT 6
N Swing repaint() funktioniert nicht AWT, Swing, JavaFX & SWT 5
T Swing repaint funktioniert nur manchmal? AWT, Swing, JavaFX & SWT 6
V Swing Bei repaint() tut sich nichts AWT, Swing, JavaFX & SWT 7
G ColorReader, bei Fadenkreuz zeichnen mit repaint() flackern AWT, Swing, JavaFX & SWT 19
I Canvas Repaint Probleme AWT, Swing, JavaFX & SWT 2
D Swing Actionlistener verhindert repaint?! AWT, Swing, JavaFX & SWT 2
S JLabel repaint AWT, Swing, JavaFX & SWT 8
C Swing Linux mag mein Swing-repaint() nicht... AWT, Swing, JavaFX & SWT 7
J Swing paintComponent() - repaint() - BufferedImage anzeigen AWT, Swing, JavaFX & SWT 5
Luk10 repaint() auch in anderen Klassen! AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen


Oben