# java-applet thread



## anti43 (22. Nov 2006)

also, ichhab mal n neuen thread eröffnet, ich hoffe das war richtig!  :roll: 
mein applet soll ja nicht nur ein bild anzeigen, sondern das bild auch aktualisieren:



```
public void run() {
		while (true) {
			camPaint(); // rufe paint auf
			try 
			{
				Thread.sleep(500);

			} catch (InterruptedException e) 
			{
				System.out.println(e); .
			}
		}

	}

	public void camPaint() {

		try {

			if (webcam != null)
				webcam.flush();
			
			webcam = getToolkit().getImage(
					new URL("http://my.saudi.net.sa/webcam/"));
			

		} catch (MalformedURLException e) {

			JLabel jL1 = new JLabel("Hallo Fehler");
		}

		JLabel jL1 = new JLabel(new ImageIcon(webcam));
		jL1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
		jL1.setSize(240, 180);
		getContentPane().add(jL1);
		
	}
```

und im eclipse debugger gehts auch, aber im realen leben bleibt das fenster leider leer :-(
		thread = new Thread(this);
		thread.start();
is im init().. und runnable() is auch implementiert


----------



## L-ectron-X (22. Nov 2006)

lösche mal in Zeile 23 dieses _getToolkit()_ oder ersetze es mit _this_.


----------



## anti43 (22. Nov 2006)

nein, leider das gleiche. debugger geht, beim ausführen wird der ganze run() bzw camPaint() -block garnicht ausgeführt denke ich, denn sonst würde ja das catch(){} greifen, oder?


```
public void run() {
		while (true) // solange true, also immer
		{
			camPaint(); // rufe paint auf
			try // und versuche, 500 Millisekunden zu warten
			{
				Thread.sleep(500);
			} catch (InterruptedException e) // wenn das mit dem Warten nicht
												// geklappt hat,
			{
				System.out.println(e); // dann gib einen Fehler aus.
			}
		}

	}

	public void camPaint() {
		
		try {

			if (webcam != null)
				webcam.flush();
			// URL strg = new URL("http://localhost/cam/");
			webcam = getImage(
					new URL("http://my.saudi.net.sa/webcam/"));
			// ImageIcon img = new ImageIcon(strg);
			
			MT.addImage(webcam, 0);

		} catch (MalformedURLException e) {
			JLabel jL1 = new JLabel("URL Fehler");
			jL1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
			jL1.setSize(240, 180);
			getContentPane().add(jL1);
		}
			try {
				MT.waitForAll();
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		if (MT.isErrorAny()){
			JLabel jL1 = new JLabel("Bild nicht geladen");
			jL1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
			jL1.setSize(240, 180);
			getContentPane().add(jL1);
			
		}else{
		JLabel jL1 = new JLabel(new ImageIcon(webcam));
		jL1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
		jL1.setSize(240, 180);
		getContentPane().add(jL1);
		}
	}
```


----------



## anti43 (23. Nov 2006)

es lag am wiederholten anlegen von jL1. ein updateComponents.. brachte das gewünschte ergebnis.


----------

