2016-11-05 5 views
0

は、私がこれまでに行ってきたが、ない画像がJFrameのに表示されていない画像とそれイメージをJLabelにインポートする方法は?ここ

JFrame frame = new JFrame("Frame title"); 
frame.getContentPane().setLayout(new GridLayout(2, 3)); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
frame.pack(); 
frame.setVisible(true); 

JLabel label = new JLabel(); 
label.setIcon(new ImageIcon("Green.png")); 
frame.add(label); 
frame.add(new JButton("SPIN")); 

Project layout

下のボタンを表示する必要があります私のコードです。写真はパッケージに入っています。

答えて

0

は、このコードではなく、ディレクトリの、あなたのプロジェクトに画像を相対ロードしようと、あなたからそれを実行している

label.setIcon(new ImageIcon(YourMainClassName.class.getResource("Green.png"))); 

によって

label.setIcon(new ImageIcon("Green.png")); 

を交換してください。詳細については、JavaチュートリアルのHow to Use Iconsセクションを参照してください。

このコードは、以下の修正が適用された場合、さらに良くなるだろう:JFramepackが元のコードで呼ばれているいかなるコンテンツを含んでいないので、それは、ウィンドウのサイズを最小化しようとすること

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セクションを参照してください。

+0

ありがとうございました!できます! –

関連する問題