Skip to Main Content

New to Java

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

SWT Browser execute() with Timer.schedule()

807601Jun 7 2008 — edited Jun 19 2008
I've got a simple SWT Browser, and a TimerTask class. By clicking a Button in the Browser class I want to schedule a TimerTask which executes javascript on the Browser, but when the Timer delay runs out, I get following error:
Exception in thread "Timer-0" org.eclipse.swt.SWTException: Invalid thread access
	at org.eclipse.swt.SWT.error(SWT.java:3563)
	at org.eclipse.swt.SWT.error(SWT.java:3481)
	at org.eclipse.swt.SWT.error(SWT.java:3452)
	at org.eclipse.swt.widgets.Widget.error(Widget.java:432)
	at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:326)
	at org.eclipse.swt.browser.Browser.execute(Browser.java:388)
	at timerLogin.run(timerLogin.java:9)
	at java.util.TimerThread.mainLoop(Unknown Source)
	at java.util.TimerThread.run(Unknown Source)
Here my Classes:
import java.util.Timer;

import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;

public class SWTBrowser {
	static Display display;
	static Shell shell;
	public static Browser browser;
	
  public static void main(String[] args) {
    display = new Display();
    shell = new Shell(display);
    final Timer timer = new Timer();
    
    shell.setText("Browser Example");
    shell.setSize(620, 500);

    ToolBar toolbar = new ToolBar(shell, SWT.NONE);
    toolbar.setBounds(5, 5, 200, 30);

    ToolItem goButton = new ToolItem(toolbar, SWT.PUSH);
    goButton.setText("Go");

    browser = new Browser(shell, SWT.NONE);
    browser.setBounds(5, 75, 600, 400);

    Listener listener = new Listener() {
      public void handleEvent(Event event) {
        ToolItem item = (ToolItem) event.widget;
        String string = item.getText();
        if (string.equals("Go"))
        	timer.schedule(new TimerLogin(), 2000);
      }
    };

    goButton.addListener(SWT.Selection, listener);

    shell.open();
    browser.setUrl("http://www.google.de");
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch())
        display.sleep();
    }
    display.dispose();
  }
}


import java.util.TimerTask;



public class TimerLogin extends TimerTask {

	@Override
	public void run() {
		SWTBrowser.browser.execute("alert('http://www.alternate.de')");
		System.out.println("Executed");
	}

}
Any solution for this?


Greetings :)
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jul 17 2008
Added on Jun 7 2008
1 comment
1,968 views