2016-04-05 34 views
0

ブラックジャックゲームを作成しているので、私はバックグラウンドとしてブラックジャックテーブルを設定しようとしています。私はコードを書く方法を理解できません。blackjack3.gifイメージは.javaファイルを持つSRCファイルにあります。Eclipseのブラックジャック背景画像

現在のコード:

`import java.awt.Graphics; 
import java.awt.Image; 

import javax.swing.ImageIcon; 
import javax.swing.JComponent; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.WindowConstants; 

class MyCanvas extends JComponent { 
    ImageIcon icon = new ImageIcon(this.getClass().getResource("blackjack3.gif").getImage()); 
    @Override 
    protected void paintComponent(Graphics g) { 
     // TODO Auto-generated method stub 
     super.paintComponent(g); 
     g.drawImage(icon.getImage(), 0, 0, getWidth(), getHeight(), null); 
    } 
} 



public class BlackJack { 

    public static void main(String args[]) { 

    JFrame myFrame = new JFrame("BlackJack"); 
    // JLabel label = new JLabel(); 
    // ImageIcon icon = new ImageIcon(blackjack3.gif); 

    MyCanvas canvas = new MyCanvas(); 
    myFrame.add(canvas); 

    myFrame.setSize(1200,604); 

    myFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 

    myFrame.setVisible(true); 
    } 
}` 

ただ、何をすべきかについていくつかの助けを必要としています。

答えて

1

blackjack3.gifのイメージは、.javaファイルを含むSRCファイルにあります。

それはクラスパス上にある必要があります。つまり、ソースファイルではなく、クラスファイルの場所になります。

それとも、イメージをロードするためにImageIO.read(...)を使用して試すことができます。ファイルをロードできない場合は、エラーが発生します。

g.drawImage(icon.getImage(), 0, 0, getWidth(), getHeight(), null); 

描画メソッドが呼び出されたときにイメージが完全に読み込まれていない可能性があります。

あなたは使用する必要があります。それは完全にロードされたときに画像自体を再描画するコンポーネントを通知します

g.drawImage(icon.getImage(), 0, 0, getWidth(), getHeight(), this); // note the "this" 

また、作業の例と画像をロードするためのより良い方法をHow to Use IconsにSwingのチュートリアルからのセクションをお読みください。

デモコードは、GUIは、すべてのSwingコンポーネントは、EDT上で作成/変更する必要があるとして重要であるイベントディスパッチスレッド上で作成されるように、より良いあなたのコードを構造化する方法を紹介します。