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?!
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();
}
}