0

結果としてプログラムの最後にJButtonに画像を設定する必要があるEclipseで実行時に実行時エラーをスローしないプログラムがありますが、画像はボタンに配置されません。プログラムは DrJava で問題なく動作しましたが、jar ファイルを作成するために eclipse に移行しました。

投稿された別の質問で、誰かが同様の問題を抱えていて、画像を src ディレクトリではなくプロジェクトディレクトリに配置する必要があると述べていましたが、実際に問題を修正する方法を説明していませんでした... eclipseが初めてなので、誰かが私を助けてくれればout id ありがとうございます。

私のコードで画像を設定する方法は次のとおりです。

public void tempSelection70 (int fRate, int wbTemp, int rcTons, int a, int r)
  {
    for (int model = 0; model < 7; model++)
    {
      MyArray y = new MyArray(tons70FCharts[model], "t");
      int[][] x = y.getArray();
      int t = x[a][r];
      if (rcTons == t)
      {
        tableButton = new JButton(new ImageIcon(tablesFor70[model], tablesFor70[model]));
        break;
      }
      else 
      {
        tableButton = new JButton(new ImageIcon("CANNOT_FIND_MODEL.GIF", "SCROLL"));
      }
    }
    for (int model = 0; model < 7; model++)
    {
      MyArray y = new MyArray(flow70FCharts[model], "f");
      int[][] x = y.getArray();
      int t = x[a][r];
      if (fRate == t)
      {
        tableButton = new JButton(new ImageIcon(tablesFor70[model], tablesFor70[model]));
        break;
      }
      else 
      {
        tableButton = new JButton(new ImageIcon("CANNOT_FIND_MODEL.GIF", "SCROLL"));
      }
    }
  }
4

1 に答える 1

0

ファイル名を引数として渡しています。このファイル名は相対ファイル名だと思います。したがって、このファイルは、IDE がjavaアプリケーションを実行するコマンドを起動するディレクトリ (作業ディレクトリ) に対して相対的です。

このディレクトリは、Eclipse の実行構成の [引数] タブで変更できます。しかし、これはおそらくあなたが望むものではありません。アイコンは必ずアプリケーションにバンドルし、クラス ローダーでロードする必要があります。ソース フォルダーのパッケージの下に配置します。Eclipse は、コンパイルされたクラスと共にそれらを出力ディレクトリにコピーします。また、アプリの jhar を生成すると、それらはクラスと一緒に jar にバンドルされます。これが完了したら、URL を引数として取るコンストラクターを使用し、渡すだけです。

SomeClassOfYourApp.getResource("/the/package/of/the/image.png")

この URL 引数として。

これにより、アイコンをアプリに簡単にバンドルでき、作業ディレクトリが何であれアイコンをロードできます。

于 2012-07-09T14:25:05.267 に答える