Repaint()? Oder was???

diabolik

Aktives Mitglied
Ich verzweifle an einem eigentlich doch einfachen Thema. Ich habe ein Fenster mit einem Label darauf. Das Label soll, wann immer die Routine refreshChart() aufgerufen wird, eine Bild von der Festplatte laden und anzeigen. Das erste Bild lädt es auch noch. Aber anschliessend bekommen ich immer das gleich Bild angzeigt, obwohl das Original längst anders aussieht. Ich finde keinen Weg das Label dazu zu bewegen, das neue Bild anzuzeigen.

Kann mir jemand einen Wink mit dem Zaunpfahl geben? Bitte?!


Java:
import aranja.Controller.AppController;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.ImageIcon;


// -------------------
//   Class: Chart
//
//   displays the current graph of a performance meassurement
// -------------------

public class Chart extends JFrame {
    // imported Classes
    //
    private AppController   appController = AppController.getSharedInstance();
    private JLabel          label = new JLabel();
    
    // Internal Variables
    //
    private String          filePath = "";
    private String          name = "";
    private int             height = 0;
    private int             width = 0;
    
    

    public Chart(String name, int width, int height, String filePath) {
        
        this.name   =   name;
        this.height =   height;
        this.width  =   width;
        this.filePath = filePath;
        
        initComponents();
        addWindowListener(appController);
    }

    //Internal Variables
    //
    private void initComponents() {
        Dimension dim = getToolkit().getScreenSize();
        
        double xPos = (dim.getHeight()/2) - (height/2);
        double yPos = (dim.getWidth()/2) - (width/2);        
        int x = new Double(xPos).intValue();
        int y = new Double(yPos).intValue();
        
        setBounds(x, y, width, height);
        setMinimumSize(new java.awt.Dimension(width + 10, height + 35));
        setTitle("Auslastung: " + name);
        setResizable(true);
        setLayout(null);
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        addComponentListener(appController);

        label = new JLabel();
        label.setHorizontalAlignment(JLabel.CENTER);
        label.setBounds(5, 5, width, height);
        label.setOpaque(true);
        add(label);
        
        pack();
        
    }
    
    public void refreshChart(){
        // Grafik erneuern
        //
        System.out.println("Refresh"); // Kontrolle

        label.setIcon(new ImageIcon(filePath));
        label.validate();
        this.repaint();
    }
    
}
 

diabolik

Aktives Mitglied
filePath wird nicht verändert. Diese Datei wird immer wieder unter dem gleichen Namen im gleichen Ordner abgelegt.

Es wird eine Lastmessung vorgenommen. Mit JFree erstelle ich daraus ein Chart und speichere dieses in eine JPEG-Datei. Anschliessend möchte ich sie einlesen und anzeigen lassen. Das passiert in einem vom Anwender vorgegebenen Intervall.

Wie schon erwähnt, wird die erste Ausgabe der Datei auch angezeigt, aber eben keine weitere.
Und das obwohl die Routine immer wieder, nach dem Zeichnen und Speichern des neuen Graphen, aufgerufen wird...
 
Zuletzt bearbeitet:

theuserbl

Bekanntes Mitglied
Versuch einfach mal das komplette JLabel neu zu erstellen:

Java:
import aranja.Controller.AppController;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.ImageIcon;


// -------------------
//   Class: Chart
//
//   displays the current graph of a performance meassurement
// -------------------

public class Chart extends JFrame {
    // imported Classes
    //
    private AppController   appController = AppController.getSharedInstance();
    private JLabel          label = new JLabel();
    
    // Internal Variables
    //
    private String          filePath = "";
    private String          name = "";
    private int             height = 0;
    private int             width = 0;
    
    

    public Chart(String name, int width, int height, String filePath) {
        
        this.name   =   name;
        this.height =   height;
        this.width  =   width;
        this.filePath = filePath;
        
        initComponents();
        addWindowListener(appController);
    }

    //Internal Variables
    //
    private void initComponents() {
        Dimension dim = getToolkit().getScreenSize();
        
        double xPos = (dim.getHeight()/2) - (height/2);
        double yPos = (dim.getWidth()/2) - (width/2);        
        int x = new Double(xPos).intValue();
        int y = new Double(yPos).intValue();
        
        setBounds(x, y, width, height);
        setMinimumSize(new java.awt.Dimension(width + 10, height + 35));
        setTitle("Auslastung: " + name);
        setResizable(true);
        setLayout(null);
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        addComponentListener(appController);

        label = new JLabel();
        label.setHorizontalAlignment(JLabel.CENTER);
        label.setBounds(5, 5, width, height);
        label.setOpaque(true);
        add(label);
        
        pack();
        
    }
    
    public void refreshChart(){
        // Grafik erneuern
        //
        System.out.println("Refresh"); // Kontrolle

        remove(label);
        label = new JLabel();
        label.setHorizontalAlignment(JLabel.CENTER);
        label.setBounds(5, 5, width, height);
        label.setOpaque(true);
        add(label);
        label.setIcon(new ImageIcon(filePath));
        label.validate();
        this.repaint();
    }

}


Wenn das nichts hilft, dann liegt es möglicherweise nicht an der Chart-Klasse.
 

diabolik

Aktives Mitglied
Hallo noch mal.
Es hat leider auch mit dem neu setzen des Labels nicht funktioniert.

ABER! Ich habe mich noch einmal mit JFree auseinandergesetzt und mir in anderen Foren Beispiele angesehen. Ich wollte einfach nicht glaube, dass man die Grafiken nicht direkt im Speicher übernehmen kann.

Nach einigem Suchen bin ich fündig geworden und es funktioniert auf Anhieb! Ich hole mir dir Grafik jetzt direkt im Speicher ab und übergeben sie als JPanel an die Chart-Klasse.

Ich Danke Euch beiden, dass Ihr Euch meines Problems angenommen habt, auch wenn meine Lösung schlussendlich eine ganz andere war/ist. ;o)

DANKE!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
A Problem: repaint() - Schleife 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
B Swing Repaint Problem - mal wieder AWT, Swing, JavaFX & SWT 5
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
Ernesto95 AnimationLoop - Problem bei Aufruf von repaint AWT, Swing, JavaFX & SWT 6
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
P EDT Problem? Kein Aufruf der repaint Methode AWT, Swing, JavaFX & SWT 6
V Applet JApplet Flackern durch Repaint AWT, Swing, JavaFX & SWT 11
kodela Problem mit repaint() AWT, Swing, JavaFX & SWT 3
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
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
H repaint()-Problem - 50% CPU-Auslastung 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
T repaint() Problem AWT, Swing, JavaFX & SWT 2
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
K Jpanel repaint problem (Fullscreen) AWT, Swing, JavaFX & SWT 5
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
A repaint() zu langsam, bitte um alternativen AWT, Swing, JavaFX & SWT 5
T Überlappende Transparenz und repaint() AWT, Swing, JavaFX & SWT 10
E EINFACHE Verständnisfrage zu repaint(), paintComponent(), usw. AWT, Swing, JavaFX & SWT 16
O Girdbag Formatierung nach repaint verloren AWT, Swing, JavaFX & SWT 2
E Swing - repaint() AWT, Swing, JavaFX & SWT 6
T Image wird nicht angezeigt?! - MediaTracker/repaint AWT, Swing, JavaFX & SWT 9
E AWT Problem mit Repaint (in Loop oder Timer) AWT, Swing, JavaFX & SWT 3
O Exception bei repaint AWT, Swing, JavaFX & SWT 3
D Fragen zu Swing, paintComponent() und repaint AWT, Swing, JavaFX & SWT 6
Dit_ Zeilenmarkierung verschwindet nach repaint() AWT, Swing, JavaFX & SWT 12
A Swing Infinite repaint loop unterbrechen AWT, Swing, JavaFX & SWT 7
hdi Swing EDT macht kein repaint() AWT, Swing, JavaFX & SWT 2
F "Verrutschen" von Komponenten bei repaint() AWT, Swing, JavaFX & SWT 9
Junker Fensterinhalt vor ausführen von repaint komplett löschen. AWT, Swing, JavaFX & SWT 2
T Fenster wird trotz repaint() und revalidate() nicht sofort neu gezeichnet AWT, Swing, JavaFX & SWT 6
E Graphics2D: altes Objekt löschen, wenn repaint aufgerufen wird AWT, Swing, JavaFX & SWT 7
J Swing Verständnis-Problem repaint(int x,int y,int width,int height) AWT, Swing, JavaFX & SWT 3
C Frame repaint hat keine Wirkung AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben