web-dev-qa-db-ja.com

JavaでWebページをどのように開きますか?

GUIのJPanel内でWebページを開く簡単な方法はありますか?

そうでない場合は、コンピューターのデフォルトのWebブラウザーでWebページをどのように開きますか?

20行未満のコードで実行できることを望んでおり、せいぜい1つのクラスを作成する必要があります。 20の理由はありませんが、小さなコードを期待しているだけです...

ゲームに行くためのガイドを開く予定です。ガイドはオンラインで複数のページがありますが、ページは相互にリンクしているため、コードで1つのURLを呼び出すだけでよいと思います。

13
GA Tech Mike

デフォルトのWebブラウザでWebページを開くのは簡単です。

Java.awt.Desktop.getDesktop().browse(theURI);

ブラウザの埋め込みはそれほど簡単ではありません。 JEditorPaneにはsome HTML機能があります(私の限られたSwing知識を正しく覚えている場合)が、それは非常に制限されており、汎用ブラウザーには適していません。

29
Joachim Sauer

私が知っている2つの標準的な方法があります:

  1. 標準 JEditorPane コンポーネント
  2. Desktop . getDesktop() . browse(URI) ユーザーのデフォルトブラウザを開く( Java 6以降)

    すぐに、3番目もあります:

  3. JWebPane コンポーネント、明らかにまだリリースされていません

JEditorPaneは非常に必要最低限​​のものです。 CSSやJavaScriptは処理せず、ハイパーリンクも自分で処理する必要があります。ただし、FireFoxを起動するよりもシームレスにアプリケーションに埋め込むことができます。

ハイパーリンクの使用方法のサンプルを次に示します(ドキュメントでフレームが使用されていない場合)。

// ... initialize myEditorPane
myEditorPane.setEditable(false); // to allow it to generate HyperlinkEvents
myEditorPane.addHyperlinkListener(new HyperlinkListener() {
    public void hyperlinkUpdate(HyperlinkEvent e) {
        if (e.getEventType() == HyperlinkEvent.EventType.ENTERED) {
            myEditorPane.setToolTipText(e.getDescription());
        } else if (e.getEventType() == HyperlinkEvent.EventType.EXITED) {
            myEditorPane.setToolTipText(null);
        } else if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
            try {
                myEditorPane.setPage(e.getURL());
            } catch (IOException ex) {
                // handle error
                ex.printStackTrace();
            }
        }
    }
});
2
Michael Myers

アプレットを開発している場合は、 AppletContext.showDocument を使用できます。それはワンライナーになります:

getAppletContext().showDocument("http://example.com", "_blank");

デスクトップアプリケーションを開発している場合は、 Bare Bones Browser Launch を試してみてください。

0
Rich Apodaca

まったく試していませんが、純粋なJavaで記述されたブラウザーである lobo browserCobra HTMLパーサーおよびビューアー が必要な場合があります。これらは、オンラインhtmlビューアを設定するためのサンプルコードを提供します。

import javax.swing.*;
import org.lobobrowser.html.gui.*;
import org.lobobrowser.html.test.*;

public class BareMinimumTest {
  public static void main(String[] args) throws Exception {
    JFrame window = new JFrame();
    HtmlPanel panel = new HtmlPanel();
    window.getContentPane().add(panel);
    window.setSize(600, 400);
    window.setVisible(true);
    new SimpleHtmlRendererContext(panel, new SimpleUserAgentContext())
    .navigate("http://lobobrowser.org/browser/home.jsp");
  }
}
0
cobbal