3

パネルに画像アイコンを設定したいのですが、こうしようとしています。

 JLabel label = new JLabel(new ImageIcon("logo.jpg"))
 panelHeader.add(label);
 add(panelHeader);

しかし、画像が表示されていません。私が間違っていることについて何か提案はありますか?

4

3 に答える 3

5

new ImageIcon()コンストラクターは、初期化されていないイメージ アイコンを作成するだけです。createImageIcon()ソースを返すメソッドを呼び出して、作成したオブジェクトImageIconにも割り当てる必要があります。ImageIcon

ImageIcon icon = createImageIcon("logo.jpg", "my logo");
JLabel label = new JLabel(icon);
于 2012-04-22T09:38:45.410 に答える
3
new ImageIcon("logo.jpg")

Stringベース コンストラクターImageIconは、文字列がファイル パスを表していると想定します。これは実行時にパネルに追加されるイメージであるため、Jar 内にある可能性が高く、File. 埋め込みアプリケーション リソースの場合、実行可能な唯一のアクセスは によるものURLです。URL は、次のようなものから取得できます。

URL logoUrl = this.getClass().getResource("/logo.jpg");

先頭に注意してください/。これにより、リソースをロードするクラスのパッケージに対する相対パスではなく、クラスパスのルートに対する相対パスでリソースを検索するように JRE に指示されます。

于 2012-04-22T09:57:57.817 に答える
3

の作成に関する 2 つの適切な回答がありImageIconます。ラベルを追加するコンテナーのレイアウトも確認する必要があります。このではFlowLayout、 の暗黙のデフォルトである を使用していますJPanel

于 2012-04-22T10:09:00.500 に答える