2016-04-30 21 views
0

私はここでかなりペイントしてしまったように私はここで何が起こっているのか分かりませんが、これは私を怒らせています。 m_backgroundイメージは、その半分だけが表示されます。私がサイズを変更すると、そこにいくつかのコンポーネントがあるように見えるので、ウィンドウの下端を上にすると画像が少なくなります。ImageIcon、イメージの半分だけが表示されています

この画像は600×600ですが、約250ピクセルしか表示されていません。 Iveはペインのすべてを削除しようとしましたが、何もしていません。

package game; 

import java.awt.Graphics; 
import java.io.File; 
import java.io.IOException; 

import javax.imageio.ImageIO; 
import javax.swing.ImageIcon; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class LudoGameController extends JPanel { 

    private JFrame m_ludoFrame; 
    private int m_humanValue; 
    private int m_computerValue; 
    private JPanel m_boardPanel; 
    private ImageIcon m_background = new ImageIcon("images/background.png"); 

    public LudoGameController(JFrame m_ludoFrame, int m_humanValue, int m_computerValue) throws IOException { 
     this.m_ludoFrame = m_ludoFrame; 
     this.m_humanValue = m_humanValue; 
     this.m_computerValue = m_computerValue; 
     m_ludoFrame.add(this); 
     m_ludoFrame.setSize(1000, 700); 
     m_ludoFrame.setVisible(true); 
    } 

    protected void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     g.drawImage(m_background.getImage(), 0, 0, null); 
    } 

} 
+1

「なぜ私のコードは機能していませんか」と尋ねていますが、コードを実行してテストすることができないので固執しています。あなたが[mcve]またはそれ以上の[sscce](http://sscce.org)を作成し投稿することができれば、すべてのオンラインで利用できるイメージを使用し、私たちの間違いを直接表示するものがベストです。 –

+0

サイド勧告として、私は 'g.drawImage(m_background.getImage()、0、0、null);を' 'g.drawImage(m_background.getImage()、0、0、this);' –

+0

私はまた、ImageIconを使用することを避けたいと思っています。 –

答えて

0

アイコン付きのJLabelを使用して、その動作が異なるかどうかを確認できますか。以下はあなたのようなシナリオで何回もうまく使用したコードのスニペットです。

+0

イメージは 'JPanel'のバックグラウンドに追加する必要があります。あなたはそれがパネルに追加されることを提案しています – Blip

+0

そうですね。あなたの答えに+1。 – corbfon

1

画像のみで作業しているので、ImageIconを使用しない方が良いです。代わりに、ファイルからイメージをロードするには、以下のようなImageIOクラスを使用します。

まずタイプImageとしてクラス変数backgroundを宣言しnullにそれを初期化します。

は、その後、あなたのコンストラクタで
File file = new File("images/background.png"); 
try { 
    background = ImageIO.read(file).getScaledInstance(1000, 700, Image.SCALE_FAST); 
} catch (IOException ex) { 
    System.err.println(ex); 
} 

今すぐあなたの paintComponent方法で、私はこの意志を願っています

g.drawImage(m_background.getImage(), 0, 0, null); 

g.drawImage(background, 0, 0, null); 

と交換したファイルから画像を取得するために、次のコードを追加します助けます。

関連する問題