在许多平台中,Browser控件皆被作为一个必需的控件给出,并提供了DOM接口,用于访问Browser的内容,相对来说,SWT中的Browser控件就比较薄弱,没有提供DOM的可控制接口。
那么,如何和控件所加载的页面进行交互呢?比如需要在集成web应用的环境中实现模拟登陆、自动填表等功能。
SWT中对Browser有不同的实现,目前实现的有IE和Mozilla。在Browser的构造函数中根据不同的平台和不同的style设置类决定使用哪个类的实现。 org.eclipse.swt.browser.Mozilla org.eclipse.swt.browser.IE 是已经实现的,而其他的 org.eclipse.swt.browser.Safari org.eclipse.swt.browser.Voyager 则没有实现。
Java应用程序如何把本地的IE或FIREFOX 嵌入到程序中。。。如果你用swt,可以用Browser类。
如果是awt或者swing,最好自己写个控件来做这个事情,写一个java的窗口,
然后用com和IE通信,用XPCOM和Firefox通信
下面一个简单的Swt例子。
代码如下:
public class TestBro {
private Text text;
protected Shell shell;
/**
* Launch the application
* @param args
*/
public static void main(String[] args) {
try {
TestBro window = new TestBro();
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.setLayout(new FormLayout());
shell.setSize(500, 375);
shell.setText("SWT Application");
final Browser browser = new Browser(shell, SWT.NONE);
final FormData fd_browser = new FormData();
fd_browser.bottom = new FormAttachment(100, 0);
fd_browser.right = new FormAttachment(100, 0);
fd_browser.top = new FormAttachment(0, 31);
fd_browser.left = new FormAttachment(0, 0);
browser.setLayoutData(fd_browser);
browser.setUrl("http://blog.csdn.net/hytdsky");
final Menu menu = new Menu(shell, SWT.BAR);
shell.setMenuBar(menu);
final MenuItem newSubmenuMenuItem = new MenuItem(menu, SWT.CASCADE);
newSubmenuMenuItem.setText("文件");
final Menu menu_1 = new Menu(newSubmenuMenuItem);
newSubmenuMenuItem.setMenu(menu_1);
final MenuItem newItemMenuItem = new MenuItem(menu_1, SWT.NONE);
newItemMenuItem.setText("退出");
final MenuItem newItemMenuItem_1 = new MenuItem(menu, SWT.NONE);
newItemMenuItem_1.setText("关于");
text = new Text(shell, SWT.BORDER);
final FormData fd_text = new FormData();
fd_text.right = new FormAttachment(100, -62);
fd_text.bottom = new FormAttachment(0, 25);
fd_text.top = new FormAttachment(0, 0);
fd_text.left = new FormAttachment(0, 0);
text.setLayoutData(fd_text);
text.setText(browser.getUrl());
Button button;
button = new Button(shell, SWT.NONE);
final FormData fd_button = new FormData();
fd_button.right = new FormAttachment(100, -6);
fd_button.bottom = new FormAttachment(text, 22, SWT.TOP);
fd_button.top = new FormAttachment(text, 0, SWT.TOP);
button.setLayoutData(fd_button);
button.setText("转到");
//
}
}