web-dev-qa-db-ja.com

Java JOptionPane.showMessageDialogカスタムアイコンの問題?

そのため、アプリケーションには、プログラムについてユーザーに通知するポップアップダイアログがあります。カスタムアイコンまではすべて順調でした。これが私が試みたものです:

試行1:

JOptionPane.showMessageDialog(dialog, "Blah blah blah", "About", JOptionPane.INFORMATION_MESSAGE, new ImageIcon("home/user/Pictures/default.jpg"));

試行2:

final icon = new ImageIcon("home/user/Pictures/default.jpg"));

    JOptionPane.showMessageDialog(dialog, "Blah blah blah", "About", JOptionPane.INFORMATION_MESSAGE, icon);

試行3:

final icon = new ImageIcon("home/user/Pictures/default.jpg"));
showMessageDialog(dialog, "Blah blah blah", "About", JOptionPane.INFORMATION_MESSAGE, icon);

試行4:

(Javaで叫ぶ)

試行5:

URLの使用


すべてがプログラムに影響を与えておらず、画像の代わりに何も得られません。


詳細:

  • 例外なく
  • ファイルパスは存在します
  • 私のIDEは例外を返しません、NORあらゆる種類の警告
  • はい、パス/home/user/Pictures/default.jpgも試してみました
  • .ico、.png、.jpgは機能しません。でも、今のところ.gifについてはよくわかりません。

助けて! :(

7
user569322

これは私のために働いた:

import javax.swing.*;

public class Test
{
    public static void main(String[] args)
    {
        final ImageIcon icon = new ImageIcon("C:\\Users\\John\\Desktop\\lol.jpg");
        JOptionPane.showMessageDialog(null, "Blah blah blah", "About", JOptionPane.INFORMATION_MESSAGE, icon);
    }
}

URLを使用するバリアントは次のとおりです。

import javax.swing.*;
import Java.net.*;

public class TestIcon
{
    public static void main(String[] args) throws Exception
    {
        final ImageIcon icon = new ImageIcon(new URL("http://www.gravatar.com/avatar/a1ab0af4997654345d7a949877f8037e?s=128&d=identicon&r=PG"));
        JOptionPane.showMessageDialog(null, "Blah blah blah", "About", JOptionPane.INFORMATION_MESSAGE, icon);
    }
}
9
John Kurlak

私はこれが少し古いことを知っていますが、私の質問を解決する返信がなかったので、いくつかの調査の後、これは私のために働いたものです(Java 1.7)で働いています:

私は次のようなgetClass().getResource(<path>)メソッドを使用しました。

ImageIcon icon = new ImageIcon(getClass().getResource(<pathToIcon>));

プロジェクトに「resources」フォルダーを作成し、その中に「icons」フォルダーを作成し、アイコン(またはオーディオファイルなどの他のもの)が必要になるたびにその場所を参照することをお勧めします。画像等)

3
Hagai

ここでこれが役立つ場合があります: http://download.Oracle.com/javase/tutorial/uiswing/components/icon.html

0
fireshadow52

同じことが私にも起こりました。私の画像が「ソース」ファイルではなく「ビン」ファイルにロードされているように見えたので、神に感謝します。パスが間違っていました。

ImageIcon preg1 = new ImageIcon("C:\\Java\\TestPsicologico\\bin\\Preg1.jpg"); 
0
Carrillo

コピーされたパスが正しくないというだけで、誰もが正しかった。

優先画像をプロジェクトのフォルダに配置するだけで、画像がプロジェクトナビゲーションタブに表示されます。画像パスをコピーして次の場所に貼り付けるだけです。

final ImageIcon icon = new ImageIcon("*Paste copied path*");


 JOptionPane.showMessageDialog(null, infoMessage, " " + titleBar, JOptionPane.INFORMATION_MESSAGE,icon);
0
Nofal

これを試して:

JPanel panel = new JPanel();
BufferedImage myPicture = null;
try
{
    myPicture = ImageIO.read(new File("home/user/Pictures/default.jpg"));
}
catch(Exception ex){}
panel.add(new JLabel(new ImageIcon(myPicture)));
panel.add(new JLabel("blah blah blah"));
Object[] options = {};
JOptionPane pane = new JOptionPane();
pane.showOptionDialog(null, panel, "About", JOptionPane.NO_OPTION, JOptionPane.PLAIN_MESSAGE, null, options, null);
0
Eng.Fouad