HTMLからなるJavaコードを書いています。その HTML コードのみをプレビューしたいJFrame
。Java API 内で利用できるソリューションはありますか?
この問題を解決する方法を教えてください。
HTMLからなるJavaコードを書いています。その HTML コードのみをプレビューしたいJFrame
。Java API 内で利用できるソリューションはありますか?
この問題を解決する方法を教えてください。
はい。はJEditorPane
(単純な) HTML を表示できます。詳細については、このJEditorPane
チュートリアルを参照してください。
実際、カスタム ユーザー テキストをどこかに表示できるほとんどすべての Swing コンポーネントでは、テキストの代わりに HTML を使用できます。たとえば、JButton テキスト、JTabbedPane タブ タイトル、JTable セル/ヘッダー、JLabel テキスト、JList/JTree/JComboBox セル レンダラー、コンポーネント ツールチップなどです。
それらの内部で HTML を使用するには (テキストの最初にタグを追加するだけ<html>
です)、ビュー パーサーに内部に HTML があることを知らせるのに十分です。
また、Java でサポートされている HTML はかなり古く、新しい機能のほとんどは最新のブラウザーやビジュアル エディターで見られるように機能しません。しかし、必要に応じていくつかの高度なコンポーネント コンテンツを作成するには、それでも十分です。
もう 1 つ - HTML 内にいくつかのローカル画像を表示したい場合は、適切にロードできるようにコンポーネントのベース位置を変更する必要があります。
component.putClientProperty (
BasicHTML.documentBaseKey,
new File ( "/local/path/" ).toURI ().toURL ()
);
適切な URL がそのキー (ローカルまたはリモート) の下にある必要があります。
JEditorPane
は、 HTML 3.2要素のサブセットと単純なスタイル (CSS) をサポートしています。このタスクは CSS を使用して実現できますが、HTML 3.2 の body 要素はbgcolor
.
import java.awt.Dimension;
import javax.swing.*;
class WebPageWithBackground {
WebPageWithBackground() {
String html = "<html><body bgcolor='#ffbb99'>Hi!";
JEditorPane jep = new JEditorPane();
jep.setContentType("text/html");
jep.setText(html);
jep.setPreferredSize(new Dimension(400,50));
JOptionPane.showMessageDialog(null, jep);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new WebPageWithBackground();
}
});
}
}