質問: new ImageIcon(".\\JButton\\JButton3\\パー.png"); btn.setIcon(icon); btn.setContentAreaFilled(false); btn.setBorderPainted(false); btn.setBounds(10,10,icon.getIconWidth(),icon.getIconHeight()); add(btn); } }
回答: ファイルの相対パス名を指定すると「カレントディレクトリーがどこかに依存してしまう」ためアプリケーション固有のリソースファイルにアクセスする方法としてはあまりおすすめできません。`Class#getResource`を使いましょう。 および を参照してください。これらを利用するとJavaのパッケージ階層に従ったパスで任意のリソースにアクセスできるようになります。例えばfoo.barパッケージにあるbaz.pngは以下のようにロードできます。 `ImageIcon icon = new ImageIcon(getClass().getResource("/foo/bar/baz.png"));` もし上記のコードがfoo.barパッケージにあるクラスならパッケージのパスを省略して `ImageIcon icon = new ImageIcon(getClass().getResource("baz.png"));` でよくなります。デバッグモードで実行しようと(つまりクラスファイルが個別にディレクトリーに出力sれていようと)jarにパッケージングした後だろうと作業ディレクトリーがどこであろうと同じコードでアクセスできるのがポイントです。ファイルのパス指定だとそうはいきません。