gpt4 book ai didi

java - JLabel 未显示

转载 作者:行者123 更新时间:2023-12-01 06:55:12 24 4
gpt4 key购买 nike

我正在完成一款游戏,但我已经达到了让我非常沮丧的地步。这可能是一个简单的修复,也是我忽略的事情,所以也许你们可以帮助我。我试图让一系列 5 个 JLabels 显示在屏幕上,其中包含游戏中的 5 个高分。但是,它一直显示有背景且没有标签。以下是我的代码:

import java.awt.Graphics;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class EndPanel extends JPanel{

GameGUI gui;
JLabel[] array;

public EndPanel(GameGUI gui) {
super();
this.gui = gui;
array = new JLabel[5];
for(JLabel i : array) {
i = new JLabel("");
i.setVisible(true);
this.add(i);
}
int i = 0;
for(HighScore h: gui.getGameDriver().getHighScores()) {
System.out.println(gui.getGameDriver().getHighScores());
array[i].setText(h.toString());
i++;
}

}

public void paint(Graphics g) {
super.paint(g);
g.drawImage(gui.images.get(32), 0, 0, this);
g.drawImage(gui.images.get(31), 112, 100, this);
}
}

最佳答案

数组的初始化非常可疑。而不是:

   for(JLabel i : array) {
i = new JLabel("");
i.setVisible(true);
this.add(i);
}

尝试:

   for (int i = 0; i < array.length; i++) {
array[i] = new JLabel("");
array[i].setVisible(true);
add(array[i]);
}

未经测试,因为您的代码无法编译。

[编辑]实际上,您不需要创建 JLabel 数组,因为您将它们扔掉(数组在方法末尾超出范围)。您可以即时创建标签:

   for (HighScore h : gui.getGameDriver().getHighScores()) {
System.out.println(gui.getGameDriver().getHighScores());
JLabel label = new JLabel(h.toString());
add(label);
}

您仍然需要使用布局管理器或绝对位置来设置这些标签的位置。

关于java - JLabel 未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13588764/

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