は、このコードではなく、ディレクトリの、あなたのプロジェクトに画像を相対ロードしようと、あなたからそれを実行している
label.setIcon(new ImageIcon(YourMainClassName.class.getResource("Green.png")));
によって
label.setIcon(new ImageIcon("Green.png"));
を交換してください。詳細については、JavaチュートリアルのHow to Use Iconsセクションを参照してください。
このコードは、以下の修正が適用された場合、さらに良くなるだろう:JFrame
はpack
が元のコードで呼ばれているいかなるコンテンツを含んでいないので、それは、ウィンドウのサイズを最小化しようとすること
JFrame frame = new JFrame("Frame title");
frame.getContentPane().setLayout(new GridLayout(2, 3));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Moved below
// frame.pack();
// frame.setVisible(true);
JLabel label = new JLabel();
label.setIcon(new ImageIcon(YourMainClassName.class.getResource("Green.png")));
// Added items go to content pane directly
frame.getContentPane().add(label);
frame.getContentPane().add(new JButton("SPIN"));
// Moved from above
frame.pack();
frame.setVisible(true);
お知らせし、 setVisible
は最初に空のフレームを表示します。その後、各コンポーネントが追加されると、フレームは再レイアウトが必要になります。
修正されたコードでは、この問題の両方が解決されます。pack
は、ウィンドウサイズを実際のコンテンツに合わせ、1回のレイアウトパスのみが必要です。
第2の変更は、フレームにコンポーネントを追加する方法です。フレームに直接追加するのではなく、フレーム内容ペインに追加する方がよいでしょう。詳細については、JavaチュートリアルのUsing Top-Level Containersセクションを参照してください。
ありがとうございました!できます! –