Hallo Leute,
ich fange gerade an mich mit Java und SWT unter Linux zu beschäftigen und habe da natürlich auch gleich ein kleines Problem.
Und zwar will ich eine Grafik in einem Label alle X Minuten aktualisieren.
Zum Testen des Timers wollte ich dazu erstmal alle 10 Sekunden die aktuelle Zeit in dem Label darstellen.
Allerdings bekomme ich immer folgenden Fehler beim Aufruf des Timers:
Hier mein Quelltext:
Und im Quelltext in Eclipse streicht mir der Editor getHours, getMinutes und getSeconds durch.
Kann mir dabei jemand helfen?
Liebe Grüße,
loony
ich fange gerade an mich mit Java und SWT unter Linux zu beschäftigen und habe da natürlich auch gleich ein kleines Problem.
Und zwar will ich eine Grafik in einem Label alle X Minuten aktualisieren.
Zum Testen des Timers wollte ich dazu erstmal alle 10 Sekunden die aktuelle Zeit in dem Label darstellen.
Allerdings bekomme ich immer folgenden Fehler beim Aufruf des Timers:
Exception in thread "Timer-0" org.eclipse.swt.SWTException: Invalid thread access
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.widgets.Widget.error(Unknown Source)
at org.eclipse.swt.widgets.Widget.checkWidget(Unknown Source)
at org.eclipse.swt.widgets.Label.setText(Unknown Source)
at WetterSpy$aktTask.run(WetterSpy.java:61)
at java.util.TimerThread.mainLoop(Timer.java:534)
at java.util.TimerThread.run(Timer.java:484)
Hier mein Quelltext:
Code:
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import java.util.*;
public class WetterSpy {
protected Shell shell;
public Timer timer = new Timer();
public Label lblWarnImage;
/**
* Launch the application
* @param args
*/
public static void main(String[] args) {
try {
WetterSpy window = new WetterSpy();
window.open();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Open the window
*/
public void open() {
final Display display = Display.getDefault();
createContents();
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
/**
* Create contents of the window
*/
protected void createContents() {
shell = new Shell();
shell.setSize(874, 375);
shell.setText("WetterSpy");
lblWarnImage = new Label(shell, SWT.BORDER);
lblWarnImage.setBounds(86, 53, 713, 63);
timer.schedule( new aktTask(), 1000);
}
class aktTask extends TimerTask {
public void run() {
System.out.println("Aktualisiere Daten");
Date dat = new Date();
String uhrzeit = dat.getHours()+":"+dat.getMinutes()+":"+dat.getSeconds();
lblWarnImage.setText(uhrzeit);
timer.schedule(new aktTask(), 10000);
}
}
}
Und im Quelltext in Eclipse streicht mir der Editor getHours, getMinutes und getSeconds durch.
Kann mir dabei jemand helfen?
Liebe Grüße,
loony