Probleme beim Reloaden des Applets im Browser

Status
Nicht offen für weitere Antworten.

UdjENE

Mitglied
hi,

wenn ich mien applet im Browser starte, läuft alles gut und das applet arbeitet wie es sein soll. jedoch wenn ich die Seite aktualisiere geht gar nix mehr und ich bekomme diese Fehlermeldung in der Konsole:
Exception in thread "AWT-EventQueue-2" java.util.NoSuchElementException
at java.util.LinkedList.getFirst(Unknown Source)
at java.awt.SequencedEvent.getFirst(Unknown Source)
at java.awt.SequencedEvent.getFirstWithContext(Unknown Source)
at java.awt.SequencedEvent.isFirstOrDisposed(Unknown Source)
at java.awt.SequencedEvent$1.evaluate(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.SequencedEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)


weiss jemand warum?
 
naja ich benutze halt jre 1.6 und nach dem reloaden funktioniert das Applet überhaupt nicht. ausserdem ist der Beitrag schon 1 jahr alt.
 
hier mal der Applet Code:
Code:
public class LiveCam extends Applet implements Runnable, ActionListener
{

	
	protected static Button BStop = new Button("Stop");
	protected static Button BStart = new Button("Start");
	protected static Button BErase = new Button("Erase");
	protected static TextArea TLog = new TextArea();
	
	public void run()
	{		
		while (true)
		{		
			try
			{
				Thread.sleep(timeInterval);
				ImageIO.setUseCache(false); 
				
				URL url = new URL (Webserver+"live.jpg?"+Math.random());
			    InputStream input = new BufferedInputStream (url.openStream ());
			    
			    img = ImageIO.read(input);
			    repaint();
				input.close();
				
				DateFormat dateInstance = new SimpleDateFormat ("H:mm:ss"); 
				timeStamp = dateInstance.format( new Date() );
				
				tempLog = TLog.getText();
				TLog.setText(timeStamp + " " + readFile() + "\n" + tempLog);
			}
			catch (Exception e)
			{
				System.out.println("Caught:"+e.toString());
			}
		}
	}

	public void init()
	{
		setComponents();
		try
		{
			img = ImageIO.read( new URL(Webserver+"blank.jpg"));
			liveThread = new Thread(this);
		}

		catch(Exception e)
		{
			showStatus("Problem getting initial image: "+e.toString());
			return;
		}

	}

	public void paint(Graphics g)
	{		
		g.drawImage(img, 10, 5, this);
	}

	public void actionPerformed(ActionEvent arg0) {
		/*Wenn Start-Button geklickt wurde...*/
		if(arg0.getActionCommand().equals("Start")){
			
			try {
				URL url = new URL (Webserver + "decoded.txt?tempVar=8508");
				new BufferedInputStream (url.openStream ());
			} catch (Exception e) {
				e.printStackTrace();
			}
			
			if(!liveThread.isAlive()){
				liveThread.start();
			}
			liveThread.resume();
		}
		
		/*Wenn Stop-Button geklickt wurde...*/
		if(arg0.getActionCommand().equals("Stop")){
			try {
				URL url = new URL (Webserver + "decoded.txt?tempVar=8008");
				new BufferedInputStream (url.openStream ());
			} catch (Exception e) {
				e.printStackTrace();
			}
			liveThread.suspend();
		}
		
		/*Wenn Erase-Button geklickt wurde...*/
		if(arg0.getActionCommand().equals("Erase"))
			TLog.setText("");
	}
	
}
 
hey,
also hab jetzt statt awt, swing genommen und diese Fehlermeldung kommt nicht mehr. Jedoch funktioniert das Apllet immer noch nicht richtig nach dem Reload.

Habe mal ein ganz einfaches Applet geschrieben, dass mir bei dem Klick auf den Start-Button die Uhrzeit in der Textarea TLog ausgibt. nach dem ersten Reload im Browser wird bei jedem Klick auf start die Uhrzeit 2 mal angezeigt. beim 2 Reload 3 mal usw.

weiss jemand was ich da löschen (z.B. in der destroy()), damit nur einmal die Uhrzeit angezeigt wird???

Code:
public class ReloadTest extends JApplet implements ActionListener{

	private static final long serialVersionUID = 1L;
	private static JButton BStop = new JButton("Stop");
	private static JButton BStart = new JButton("Start");
	private static JTextArea TLog = new JTextArea();
	private static JScrollPane scrollPane = null;
	String timeStamp="";
	Container cp;
	
	public void init(){
		cp  = getContentPane();
		setSize(400,400);
		
		cp.setBackground(new Color(255,255,255));
		cp.setLayout(null); 
		cp.setVisible(true);
		cp.setLayout(null);
		
		BStop.setBounds(10, 10, 80, 20);
		BStop.addActionListener(this);
		cp.add( BStop,this);
		
		BStart.setBounds(130, 10, 80, 20);
		BStart.addActionListener(this);
		cp.add( BStart,this);
		
		TLog.setEditable(false);
		TLog.setLineWrap(true); 
		TLog.setFont( new Font(Font.SERIF, Font.PLAIN, 12) ); 
		
		//Füge einen Scrollbalken der Textarea hinzu
		scrollPane = new JScrollPane(TLog);
        scrollPane.setBounds(10, 50, 320, 150);
        cp.add(scrollPane);
	}
	
	public void actionPerformed(ActionEvent arg0) {
		/*Wenn Start-Button geklickt wurde...*/
		if(arg0.getActionCommand().equals("Start")){
			DateFormat dateInstance = new SimpleDateFormat ("H:mm:ss:S\t"); 
			timeStamp = dateInstance.format( new Date() );
			
			
			TLog.setText(timeStamp + "\n" + TLog.getText());
			
		}
		
		/*Wenn Stop-Button geklickt wurde...*/
		if(arg0.getActionCommand().equals("Stop")){
			TLog.setText("");
			
		}
			
	}

}
 
probier mal
Code:
public void destroy()
{
   BStop.removeActionListener(this); 
   BStart.removeActionListener(this); 
}
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben