【发布时间】:2014-05-20 00:09:26
【问题描述】:
如何重新绘制另一个 JPanel 中的 JPanel?我尝试了一些我在互联网上找到的答案,但我无法让它工作...... 有一段我的代码:
我的主面板:
contentPane = new JPanel() {
protected void paintComponent(java.awt.Graphics g) {
super.paintComponents(g);
try {
g.drawImage(ImageIO.read(JanelaJogo.class
.getResource("/imagens/fundo/fundo4.jpg")), 0, 0,
this);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
这是里面的面板:
bonusPanel = new JPanel() {
@Override
public void paintComponents(Graphics g) {
// TODO Auto-generated method stub
super.paintComponent(g);
}
@Override
public Dimension getPreferredSize()
{
Dimension dim = contentPane.getSize();
int largura = dim.width;
dim = new Dimension(largura, 150);
return new Dimension(dim);
}
};
bonusPanel.setBackground(new Color(0, 0, 0, 0));
contentPane.add(bonusPanel, BorderLayout.SOUTH);
我的 BonusPanel 有 2 个标签是图像图标,当某些用户在游戏中进行组合时,我希望该图像刷新,问题是它不刷新......
我在contentPane 和bonusPanel 中尝试过repaint()、revalidade()、validade(),但都没有工作...
提前感谢您的帮助!
更新:有一张图片,我会更好地解释我想要什么......
我把程序的输出放在java控制台中,所以,当“炸弹”匹配时,电源(按钮上的炸弹)应该改变图像......并打印以控制台当前图像,如您所见,它更改为图像“bonus_bomba_1.png”和“bonus_bomba_2.png”,但问题是刷新GUI... 我更新了我之前为我当前发布的代码...... 我只是没有更改 drawImage,因为我还没有弄清楚我应该做什么,而且由于它正在工作,所以我还没有更改它......
这就是我在“权力”中为更新标签图像所做的事情:
private void iconBomb(String s) {
try {
bombPic = ImageIO.read(this.getClass().getResource(s));
powerBomb.setIcon(new ImageIcon(bombPic));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
提前感谢您的帮助!
【问题讨论】:
标签: java swing jpanel refresh paintcomponent