GUIのJPanel内でWebページを開く簡単な方法はありますか?
そうでない場合は、コンピューターのデフォルトのWebブラウザーでWebページをどのように開きますか?
20行未満のコードで実行できることを望んでおり、せいぜい1つのクラスを作成する必要があります。 20の理由はありませんが、小さなコードを期待しているだけです...
ゲームに行くためのガイドを開く予定です。ガイドはオンラインで複数のページがありますが、ページは相互にリンクしているため、コードで1つのURLを呼び出すだけでよいと思います。
デフォルトのWebブラウザでWebページを開くのは簡単です。
Java.awt.Desktop.getDesktop().browse(theURI);
ブラウザの埋め込みはそれほど簡単ではありません。 JEditorPane
にはsome HTML機能があります(私の限られたSwing知識を正しく覚えている場合)が、それは非常に制限されており、汎用ブラウザーには適していません。
私が知っている2つの標準的な方法があります:
JEditorPane
コンポーネントDesktop
. getDesktop()
. browse(URI)
ユーザーのデフォルトブラウザを開く( Java 6以降)
すぐに、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();
}
}
}
});
アプレットを開発している場合は、 AppletContext.showDocument を使用できます。それはワンライナーになります:
getAppletContext().showDocument("http://example.com", "_blank");
デスクトップアプリケーションを開発している場合は、 Bare Bones Browser Launch を試してみてください。
まったく試していませんが、純粋なJavaで記述されたブラウザーである lobo browser の Cobra 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");
}
}