2016-10-03 12 views
0

JavaとSWTのBrowserを使用しました。私は2つのシステムバージョンのアプリケーションを用意しています。最初はWindows用のOSXの2番目のバージョンです。異なるシステムのSWT

両方のシステムは、私はページをロードし、(新しいウィンドウを作成)ボタンをクリックし、ブラウザで両方

<profile> 
    <id>windows-deploy</id> 

    <dependencies> 
     <dependency> 
      <groupId>org.eclipse.swt</groupId> 
      <artifactId>org.eclipse.swt.win32.win32.x86_64</artifactId> 
      <version>4.6.1</version> 
     </dependency> 
    </dependencies> 
</profile> 

<profile> 
    <id>osx-deploy</id> 

    <dependencies> 
     <dependency> 
      <groupId>org.eclipse.swt</groupId> 
      <artifactId>org.eclipse.swt.cocoa.macosx.x86_64</artifactId> 
      <version>4.6.1</version> 
     </dependency> 
    </dependencies> 
</profile> 

を宣言したMavenの中ので、64ビット

SWTは、異なるシステムごとに異なるライブラリが必要ですが、私はやります新しいウィンドウを開く必要はありません。実際のブラウザをリロードするだけです。新しいページは、私が下のコードで好きでした。

browser.addOpenWindowListener(new OpenWindowListener() { 
    public void open(WindowEvent event) { 
     Log.debug(TAG + "<>", "Open new page!"); 
     event.browser = browser; 
    } 
}); 

そして、OS Xシステム上ではうまくいきます。

しかし、Windowsで試してみると、古いページのボタンをクリックした後は変更されません。私はログと "新しいページを開く!"というメッセージをチェックしました。何も起こらない(新しいページはOS Xのように読み込まれない)。私はWebKitとbrowser.refresh()ブラウザを更新してロードページの後にリフレッシュすることができるかもしれませんが、古いコンテンツ(OS Xのように新しくはありません)があります。

event.browser = browser;以降、SWTライブラリのWebKitが制御を引き継いだ後に何が起きるかをチェックしてチェックしました。

OS XのようにWindowsで同じ効果を得るにはどうすればよいですか?

+2

バッククォートを使いすぎないようにしてくださいキーワードの場合、 ''はインラインコードで使用されます。 – Baz

+0

申し訳ありませんが、間違った方法で使用しないことを約束します – czArek

答えて

1

決議

問題は図書館です。 OSXのシステムでは、我々はevent.browserオブジェクトを変更すると、自動的に検出され、それが作業していて、Windowsシステム上で、我々は以下のコードの断片のようにブラウザVisibilityWindowListenerに追加する必要があると正常に動作している:)

browser.addVisibilityWindowListener(new VisibilityWindowListener() { 
      public void hide(WindowEvent event) { 
      } 

      public void show(WindowEvent event) { 
       Browser browser = (Browser) event.widget; 
       Shell shell = browser.getShell(); 

       if (event.location != null) 
        shell.setLocation(event.location); 

       if (event.size != null) { 
        Point size = event.size; 
        shell.setSize(shell.computeSize(size.x, size.y)); 
       } 

       shell.open(); 
      } 
     }); 
関連する問題