2015-06-12 3 views
2

Можно ли изменить изображение JPanel после его инициализации?Как сменить фоновое изображение JPanel

Block.java (The JPanel изменить IMG)

@SuppressWarnings("serial") 
public class Block extends JPanel{ 

    private int rotation; 

    public Block(){ 
    } 

    @Override 
    protected void paintComponent(Graphics g){ 
     super.paintComponent(g);  
     Graphics2D g2 = (Graphics2D) g; 

     g2.drawImage(Images.greenBlock, 0, 0, null); 

    } 
} 

Теперь мне нужен метод, как changeImage:

... 
JPanel xy = new Block(); 

xy.changeImage(newImg); //I know this method does NOT exist 

Спасибо за вашу помощь

ответ

2

Изменение этого:

JPanel xy = new Block(); 

к этому:

Block xy = new Block(); 

и дать Блок А changeImage(newImg) метод в котором можно изменить изображение, которое переменная greenBlock относится. В рамках вашего метода changeImage, не забудьте называть repaint();

Вопрос: почему заявление break; в вашем методе paintComponent?


например,

public class Block extends JPanel{ 

    private int rotation; 
    // if you wish to initialize it with greenBlock... 
    private Image myImage = Images.greenBlock; 

    public Block(){ 
    } 

    @Override 
    protected void paintComponent(Graphics g){ 
     super.paintComponent(g);  
     Graphics2D g2 = (Graphics2D) g; 
     g2.drawImage(myImage, 0, 0, null); 
    } 

    public void changeImage(Image img) { 
     this.myImage = img; 
     repaint(); 
    } 
} 
+1

я shortend класс для лучшего обзора и забудьте снять перерыв;) –

+1

@SeseSchneider: смотрите, например, редактировать –

+1

спасибо, это работает :) –

Смежные вопросы