JLabel に img タグを付けることはできますか
質問
次のように、数行のテキストと画像を含む JLabel を表示しようとしています。
String html = "<html> hello </br> <img src = \"/absolute/path/here\" height = \"30\" width =\"40\"/> </html>";
JLabel l = new JLabel(html);
画像の場合、壊れた画像しか得られませんが、JLabel 内に img タグをネストすることは可能ですか?
編集:JLabel に複数の画像を追加したいので、ここでは ImageIcon の使用はできないと思います。
ありがとう
解決
むしろ、単に単一のJPanelに一緒にすべてのラベルを、多くのJLabelを有する1枚の画像と各(utharkが記載されているように)、次いで群ない理由単一JLabelの上に複数の画像を有することを試みます。それはあなたが唯一の最小限の追加の複雑性を探している効果を与える必要があります。
他のヒント
File f = new File("C:\image.jpg");
jLabel1.setText("<html><img src=\"file:"+f.toString()+"\">");
これは私のために動作します。それは簡単ですし、あなたが望む任意の数の画像だけではなく、一つの画像のアイコンを配置する可能性を提供します。これは、引用符なしで働いていない。
For the image all I get is a broken image, is it possible to nest img tags inside a JLabel
それ は JLabel のテキスト内に画像を表示することが可能です。壊れた画像が表示される理由は、 パスが正しくありません. 。パスの前に次のいずれかを付ける必要があります file:
または、できれば Java にそれを実行してもらいます class.getResource("/your/path")
. 。これは実際の例です。有効なリソース パスを挿入するだけです。
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class MultipleImagesExample
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
frame.setLayout(new BorderLayout());
JLabel label = new JLabel(
"<html>"
+ "<img src=\""
+ MultipleImagesExample.class.getResource("/resource/path/to/image1")
+ "\">"
+ "<img src=\""
+ MultipleImagesExample.class.getResource("/resource/path/to/image2")
+ "\">"
+ "The text</html>");
frame.add(label, BorderLayout.CENTER);
frame.setBounds(100, 100, 200, 100);
frame.setVisible(true);
}
}
Java でのより複雑な HTML については、次をお勧めします。 xhtmlレンダラー.
はJEditorPaneので、あなたしている幸せがない限り、あなたは基本的にスイングの完全なWebブラウザーの内部を見ている。
理想的には、SwingコンポーネントとしてWebKitのビューになりますどのJWebPaneを使用しますが、それはまだ出ていません。私は見つけることができる最新の情報は、このブログ記事でいました。
スイング中にプラットフォームのネイティブブラウザを埋め込むことができますのDJプロジェクト。これは、Linux上でWindowsやXULRunnerの上のInternet Explorerを使用しています。それは、Mac用のすべてのサポートされていません。
を使用するJEditorPaneのは、HTMLを表示します。それはラベルのように見えるようにするには、バックグラウンド、フォアグラウンド、フォントなどを変更することができます。
上記のアプローチはもう仕事にいないようです。
それはあなたが今img
タグ内の実際のURIを使用する必要がありますようです。
物事"<img src=\"" + new File(...).toURI() + "\">"
と私のために働くます。
組み込み画像がHTMLでサポートされていません。したがって、あなたはsetIconを使用するか、JLabelのコンストラクタにイメージアイコンを供給しなければなりません。 HTMLは、IMGタグを持つことができません。
JLabel imageLabel =
new JLabel(labelText,
new ImageIcon("path/to/image.gif"),
JLabel.CENTER);
あなたのケースでは、あなたが使用する必要が JTextPaneの HTMLを表示します。チュートリアルここを
を参照してください。