有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

eclipse插件中的java SWT浏览器在Mac和Windows中的行为不同

我在Eclipse插件项目中使用SWT浏览器。它在显示本地生成的HTML的视图中显示浏览器。在Mac上,一切正常。我可以使用代码在同一浏览器中打开本地链接

browser.addOpenWindowListener(new OpenWindowListener() {
  public void open(WindowEvent event) {
    event.browser = browser;
    event.required = true;
  }
});

现在我想在Windows上实现同样的行为,但我永远都不会成功。当我点击链接时,什么也没有发生。如果我删除了侦听器,当我单击鼠标时会打开一个InternetExplorer窗口,而不是我想要的

我已经看到,在windows中,SWT浏览器使用的是IE风格。我也读过关于如何在windows中制作Mozilla风格浏览器的帖子。但我不希望用户做任何额外的设置或安装任何其他东西

有人有解决办法吗

编辑:显示本地html文件的示例代码

String url = "C:\\Users\\myname\\runtime-EclipseApplication\\tt\\target\\Results.html";
try {
  URI uri = new File(url).toURI();
  URL urls = uri.toURL();
  browser.setUrl(urls.toString());
} catch (MalformedURLException e) {
  e.printStackTrace();
}

共 (1) 个答案

  1. # 1 楼答案

    在Windows 7上使用带有SWT.NONEBrowser可以很好地工作:

    public static void main(String[] args)
    {
        Display display = new Display();
    
        final Shell shell = new Shell(display);
        shell.setText("StackOverflow");
        shell.setLayout(new FillLayout());
    
        Browser browser = new Browser(shell, SWT.NONE);
    
        String url = "start.html";
        try
        {
            URI uri = new File(url).toURI();
            URL urls = uri.toURL();
            browser.setUrl(urls.toString());
        }
        catch (MalformedURLException e)
        {
            e.printStackTrace();
        }
    
        shell.pack();
        shell.setSize(400, 300);
        shell.open();
    
        while (!shell.isDisposed())
        {
            if (!display.readAndDispatch())
            {
                display.sleep();
            }
        }
    
        display.dispose();
    }
    

    这是start.html的内容:

    <a href="./test.html">Click here</a>
    

    以及test.html的内容:

    <h1>HELLO</h1>