16

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

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

20 行未満のコードでできることを望んでおり、せいぜい 1 つのクラスを作成する必要があります。20の理由はありませんが、コードが少ないことを願っています...

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

4

6 に答える 6

34

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

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

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

于 2009-04-14T19:13:47.937 に答える
2

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

  1. 標準JEditorPaneコンポーネント
  2. DesktopgetDesktop()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();
            }
        }
    }
});
于 2009-04-14T19:11:40.890 に答える
0

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

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

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

于 2009-04-14T19:14:27.123 に答える
0

まだ試したことはありませんが、純粋なJavaで記述されたブラウザであるloboブラウザのcobraHTMLパーサーとビューアが必要な場合があります。オンライン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");
  }
}
于 2009-04-14T19:15:07.637 に答える
-1

そのような組み込みが存在するかどうかはわかりませんが、引数としてiexplore.exeまたはfirefox.exeを指定してRuntimeクラスのexecを使用します。

于 2009-04-14T19:11:43.560 に答える