gpt4 book ai didi

java - 在其他 JPanel 内重新绘制 JPanel

转载 作者:行者123 更新时间:2023-12-01 23:05:01 25 4
gpt4 key购买 nike

如何重新绘制另一个 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个标签,它们是图像图标,我希望当某些用户在游戏中进行组合时该图像刷新,问题是它不刷新...我在 contentPanebonusPanel 中尝试过 repaint()revalidade()validade() 但没有一个工作...预先感谢您的帮助!

更新:有一张图片,我会更好地解释我想要什么...... enter image description here

我将程序的输出放入java控制台,因此,当匹配“炸弹”时,电源(按钮上的炸弹)应该改变图像......并且我打印以控制台当前图像,如您所见,它更改为图像“bonus_bomba_1.png”和“bonus_bomba_2.png”,但问题是刷新GUI...我更新了之前发布的当前代码......我只是没有改变drawImage,因为我还不知道我应该做什么,而且由于它正在工作,我还没有改变它......

这就是我在“power”中所做的用于更新标签图像的操作:

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();
}

提前感谢您的帮助!

最佳答案

1) 不要调用 super.paintChildren()。 Swing 会为你做到这一点。您所做的就是调用 super.paintComponent();

2) 不要在绘画方法中读取文件。绘画方法仅用于绘画。

3) 您要将奖励面板添加到框架的南边,以便面板以其首选尺寸显示。您需要重写面板的 getPreferredSize() 方法以返回合理的大小:

@Override
public Dimension getPreferredSize()
{
return new Dimension(...);
}

阅读 Swing 教程中关于 Custom Painting 的部分了解更多信息和工作示例。

关于java - 在其他 JPanel 内重新绘制 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22917678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com