パネルに画像アイコンを設定したいのですが、こうしようとしています。
JLabel label = new JLabel(new ImageIcon("logo.jpg"))
panelHeader.add(label);
add(panelHeader);
しかし、画像が表示されていません。私が間違っていることについて何か提案はありますか?
new ImageIcon()
コンストラクターは、初期化されていないイメージ アイコンを作成するだけです。createImageIcon()
ソースを返すメソッドを呼び出して、作成したオブジェクトImageIcon
にも割り当てる必要があります。ImageIcon
ImageIcon icon = createImageIcon("logo.jpg", "my logo");
JLabel label = new JLabel(icon);
new ImageIcon("logo.jpg")
のString
ベース コンストラクターImageIcon
は、文字列がファイル パスを表していると想定します。これは実行時にパネルに追加されるイメージであるため、Jar 内にある可能性が高く、File
. 埋め込みアプリケーション リソースの場合、実行可能な唯一のアクセスは によるものURL
です。URL は、次のようなものから取得できます。
URL logoUrl = this.getClass().getResource("/logo.jpg");
先頭に注意してください/
。これにより、リソースをロードするクラスのパッケージに対する相対パスではなく、クラスパスのルートに対する相対パスでリソースを検索するように JRE に指示されます。
の作成に関する 2 つの適切な回答がありImageIcon
ます。ラベルを追加するコンテナーのレイアウトも確認する必要があります。この例ではFlowLayout
、 の暗黙のデフォルトである を使用していますJPanel
。