JFrame
/を使用して作成した小さな「hello world」アプリがJPanel
あり、IDE (Netbeans) 内で問題なく動作します。を使用して画面に文字列を描画するだけでテストしたところGraphics.drawString()
、ブラウザとビルドされた .Jar ファイルの両方で完全に機能しました。
テストするためだけにイメージを追加することにしました (Java は初めてです)。アプリは IDE 内で機能し続けましたが、ビルドされた .Jar ファイルは何も起動せず、エラーも発生しません。
2 つのクラス ファイルは次のとおりです。
Boxy_Main.java:
package boxy;
import javax.swing.JFrame;
import java.awt.*;
public class Boxy_Main extends JFrame {
public static Boxy_Main main;
public Boxy_Main() {
add(new Board());
setTitle("Boxy");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(467, 700);
setLocationRelativeTo(null);
setVisible(true);
setResizable(true);
}
public static void main(String[] args) {
main = new Boxy_Main();
}
}
Board.java:
package boxy;
import javax.swing.JPanel;
import java.awt.*;
import javax.swing.*;
public class Board extends JPanel {
public Graphics2D g2d;
public Graphics g;
public Image hello_image;
public Board() {
this.set_properties();
}
public void set_properties() {
this.hello_image = new ImageIcon(Board.class.getResource("../images/LKRZV.jpg")).getImage();
}
public void paint(Graphics g) {
this.g = g;
this.g2d = (Graphics2D) g;
this.g2d.drawImage(this.hello_image, null, this);
this.g.drawString("hello", 100, 80);
this.g.drawString("world", 100, 94);
}
}
コメントアウトしたら
this.hello_image = new ImageIcon(Board.class.getResource("../images/LKRZV.jpg")).getImage();
と
this.g2d.drawImage(this.hello_image, null, this);
それは完璧に機能し続けます。
私はこれを自分で理解しようとしましたが、Googleまたはスタックオーバーフローで何も見つかりません。作るのが難しい検索フレーズです。
これが NetBeans で実行されるのに、スタンドアロンの .Jar として実行されない理由を知っている人はいますか?