2017-06-22 10 views
1

私はあなたの助けを求めることがありますか?私はJPanelの内部に画像を描くのにいくつか問題があります。私は今、私は私のnewExampleクラスはgenericExampleを拡張するためにもそうJPanelのを拡張することができないことを行うことができない、のJPanelを拡張したクラスを作成するために使用されると、このdrawImageを使用してJPanelで画像をペイント

public class Example extends JPanel { 

    BufferedImage background; 

    public Example() { 

     background = loadImage(); 
    }   

    private BufferedImage loadImage(){ 
     URL imagePath = getClass().getResource("Immagini/Board.png"); 
     BufferedImage result = null; 
     try { 
      result = ImageIO.read(imagePath); 
     } catch (IOException e) { 
      System.err.println("Errore, immagine non trovata"); 
     } 

     return result; 
    } 

    @Override 
    public void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     Dimension size = getSize(); 
     g.drawImage(background, 0, 0,size.width, size.height,0, 0, background.getWidth(), background.getHeight(), null); 

    } 
} 

を行なったし、それは完璧でした。私はをnewExampleの中に入れていますが、上のコードで行ったようにペイントしたいのですが、どうやってこの異なる状況で使うのですか?

+0

私はJavaインターフェイスをチェックアウトします。 [Here](https://docs.oracle.com/javase/tutorial/java/concepts/interface.html)は、その情報の一部です。 – mrob

答えて

1

Exampleクラスは引き続き再利用できます。

JPanel panel = new Example(); 

もう一つの方法は、JPanelの匿名の実装を使用することです:代わりにあなたが上書きされたパネルのクラスを使用しますJPanel panel = new JPanel();

JPanel panel = new JPanel(){ 
    BufferedImage background = loadImage(); 

    private BufferedImage loadImage(){ 
     URL imagePath = getClass().getResource("Immagini/Board.png"); 
     BufferedImage result = null; 
     try { 
      result = ImageIO.read(imagePath); 
     } catch (IOException e) { 
      System.err.println("Errore, immagine non trovata"); 
     } 
     return result; 
    } 

    @Override 
    public void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     Dimension size = getSize(); 
     g.drawImage(background, 0, 0,size.width, size.height,0, 0, background.getWidth(), background.getHeight(), null); 
    } 
}; 

あなたが匿名クラスでコンストラクタを使用することはできません注意再利用性に悪いです。

ほんの少し役に立ちます。

+0

ありがとうございます!それについて考えなかった –

関連する問題