Einen wunderschönen guten Morgen,
ich setz jetzt schon eine Weile an einer Problematik und finde dafür einfach keine Lösung, daher frage ich mal hier nach in der Hoffnung das eine Lösung gefunden wird.
Ich habe ein Programm, was an sich relativ Simple ist. Ich habe eine GUI auf der was dargestellt wird. Alles nicht so schwer. Jetzt soll aber in der GUI immer ein aktueller Wert aus der Datenbank geholt und dargestellt werden. Das aktualisieren habe ich jetzt in einem neuen Thread gestartet, falls es falsch war korrigiert mich bitte.
Jedoch funktioniert es ja auch soweit. Jede Sekunde wird ein der aktuelle Wert angezeigt. Wenn ich jedoch dann die Seite verlasse um mir eine andere anzuschauen (der Thread läuft in der Zeit weiter, da ich ihn nur einmal starten möchte) und komme dann auf die Seite wo ich den Wert anzeigen lass, wird er einfach nicht mehr angezeigt. Und ich weiß nicht wieso. (Da find ich das Wort Quälcode wieder passend)
Ich hoffe ihr könntet mir dabei helfen
LG Kaku
ich setz jetzt schon eine Weile an einer Problematik und finde dafür einfach keine Lösung, daher frage ich mal hier nach in der Hoffnung das eine Lösung gefunden wird.
Ich habe ein Programm, was an sich relativ Simple ist. Ich habe eine GUI auf der was dargestellt wird. Alles nicht so schwer. Jetzt soll aber in der GUI immer ein aktueller Wert aus der Datenbank geholt und dargestellt werden. Das aktualisieren habe ich jetzt in einem neuen Thread gestartet, falls es falsch war korrigiert mich bitte.
Jedoch funktioniert es ja auch soweit. Jede Sekunde wird ein der aktuelle Wert angezeigt. Wenn ich jedoch dann die Seite verlasse um mir eine andere anzuschauen (der Thread läuft in der Zeit weiter, da ich ihn nur einmal starten möchte) und komme dann auf die Seite wo ich den Wert anzeigen lass, wird er einfach nicht mehr angezeigt. Und ich weiß nicht wieso. (Da find ich das Wort Quälcode wieder passend)
Java:
public class Uebersicht {
JPanel tmp;
JTextArea temperatur_AT1;
public void anzeige() {
final JFrame window = new JFrame();
window.setUndecorated(true);
// Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
// window.setSize(screenSize);
window.setSize(1024, 768);
window.setLayout(null);
tmp = new JPanel();
tmp.setLayout(null);
tmp.setBounds(375, 360, 120, 53);
if (!DemoThread.isRunning) {
DemoThread refreshTMP = new DemoThread();
refreshTMP.textArea(tmp);
refreshTMP.start();
} else {
// Hier soll einfach nur noch mal das refreshTMP.textArea(temp)
// angezeigt werden,
// ohne das ich noch mal ein Objekt von DemoThread erstelle. Meine
// Idee war:
temperatur_AT1 = new JTextArea();
temperatur_AT1
.setText(Double.toString(cn.getSollTemperaturMilch()));
temperatur_AT1.setOpaque(true);
temperatur_AT1.setBackground(Color.LIGHT_GRAY);
temperatur_AT1.setEditable(false);
temperatur_AT1.setHighlighter(null);
temperatur_AT1.setFocusable(false);
temperatur_AT1.setBorder(null);
temperatur_AT1.setBounds(40, 10, 75, 40);
temperatur_AT1.setFont(new Font("Arial", Font.PLAIN, 30));
tmp.setVisible(true);
}
}
}
public class DemoThread extends Thread {
DBConnect cn = new DBConnect();
static DemoThread other;
JTextArea temperatur_AT1;
JFrame display;
int thread = 0;
static JPanel bg;
static boolean isRunning = false;
public void textArea(final JPanel tmp) {
temperatur_AT1 = new JTextArea();
temperatur_AT1.setText(Double.toString(cn.getSollTemperaturMilch()));
temperatur_AT1.setOpaque(true);
temperatur_AT1.setBackground(Color.LIGHT_GRAY);
temperatur_AT1.setEditable(false);
temperatur_AT1.setHighlighter(null);
temperatur_AT1.setFocusable(false);
temperatur_AT1.setBorder(null);
temperatur_AT1.setBounds(40 ,10, 75, 40);
temperatur_AT1.setFont(new Font("Arial", Font.PLAIN, 30));
isRunning = true;
bg = tmp;
}
public void run() {
do {
bg.add(temperatur_AT1);
try {
sleep(1000);
} catch (InterruptedException e) {
}
temperatur_AT1
.setText(Double.toString(cn.getSollTemperaturMilch()));
bg.remove(temperatur_AT1);
System.out.println();
} while (thread == 0);
}
}
Ich hoffe ihr könntet mir dabei helfen
LG Kaku