我已经设置了一个浏览器实现来查看网页。我无法弄清楚如何捕获超链接点击。如果我点击某个链接就没有任何反应。
我已尝试过Listener,LocationListener并应用于shell,display,browserWindowGroup和浏览器,但没有响应超链接点击。
更新:这与http://inbox.google.com特别相关。我可以点击其他地方的超链接,而不是在Google收件箱中的邮件正文中。
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;
public class BrowserTest {
public static void main(String[] args) {
Display display = new Display();
final Shell shell = new Shell(display);
shell.setText("Browser Test");
shell.setLayout(new GridLayout(1, false));
Group browserWindowGroup = new Group(shell, SWT.NONE);
browserWindowGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
browserWindowGroup.setLayout(new GridLayout(1, false));
final Browser browser = new Browser(browserWindowGroup, SWT.NONE);
browser.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
shell.setSize(1280, 800);
shell.open();
browser.setUrl("http://inbox.google.com");
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
答案 0 :(得分:0)
感谢您提供可运行的示例! 我在https://deanoneclipse.wordpress.com/2011/04/27/intercepting-links/
找到了解决方案您需要添加LocationListener
,就像这样
browser.addLocationListener(new LocationListener() {
public void changing(LocationEvent event) {
System.out.println(event);
}
public void changed(LocationEvent event) {
}
});
让你的全班看起来像这样
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.browser.LocationEvent;
import org.eclipse.swt.browser.LocationListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Shell;
public class BrowserTest {
public static void main(String[] args) {
Display display = new Display();
final Shell shell = new Shell(display);
shell.setText("Browser Test");
shell.setLayout(new GridLayout(1, false));
Group browserWindowGroup = new Group(shell, SWT.NONE);
browserWindowGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
browserWindowGroup.setLayout(new GridLayout(1, false));
final Browser browser = new Browser(browserWindowGroup, SWT.NONE);
browser.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
browser.addLocationListener(new LocationListener() {
public void changing(LocationEvent event) {
System.out.println(event);
}
public void changed(LocationEvent event) {
}
});
shell.setSize(1280, 800);
shell.open();
browser.setUrl("http://www.google.com");
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}