gpt4 book ai didi

Java Swing GridLayout 不会添加 JLabel

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

JLabel imagine_hearth = new JLabel(new ImageIcon( new ImgUtils().scaleImage(35,35,"health.png")));
JLabel imagine_bullet = new JLabel(new ImageIcon( new ImgUtils().scaleImage(35,35,"bullet.jpg")));
JLabel player_icon = new JLabel();
Board2 b2 = new Board2();
JPanel stats = new JPanel();
stats.setSize(100,450);
stats.setLayout(new GridLayout(12,2));
for(i=1; i<5 ; i++)
{
stats.add(new JLabel("Player " + i));
player_icon.setIcon(new ImageIcon( new ImgUtils().scaleImage(35,35,pioni[i-1])));
stats.add(player_icon,BorderLayout.CENTER);
stats.add(new JLabel("X" + pl[i-1].nr_lives));
stats.add(imagine_hearth,BorderLayout.CENTER);
stats.add(new JLabel("X" + pl[i-1].nr_bullets));
stats.add(imagine_bullet,BorderLayout.CENTER);
}

this is how it looks我刚刚开始用 java 编码,遇到了 JLabel 网格布局的问题。正如您在上面的代码中看到的,我尝试制作一个包含文本和图片的 12X2 矩阵,但程序仅加载最终条目的图片,我不知道为什么。我尝试了几个选项,例如 GridBagLayout,但没有成功。预先感谢您的帮助。

最佳答案

JLabel 只能有 1 个父级且位于 1 个位置。因此,当您再次添加它时,它会从旧位置中删除自身,然后添加到新位置。这与布局无关,并且是所有 Swing 组件中不变的行为。要解决此问题,您需要制作几个 JLabel。不过,您仍然可以共享 ImageIcon

ImageIcon imagine_hearth = new ImageIcon( new ImgUtils().scaleImage(35,35,"health.png"));
ImageIcon imagine_bullet = new ImageIcon( new ImgUtils().scaleImage(35,35,"bullet.jpg"));

<other code you had, *without player_icon*>
for(i=1; i<5 ; i++) {
<loop code>
JLabel player_icon = new JLabel(new ImageIcon( new ImgUtils().scaleImage(35,35,pioni[i-1])));
stats.add(player_icon);
<...>
stats.add(new JLabel(imagine_hearth));
<...>
stats.add(new JLabel(imagine_bullet));
}

附注在纯 Java 代码中通常不鼓励使用下划线(尽管在低级网络等 C 风格代码中通常可以使用下划线)。请参阅Java Code Conventions .

关于Java Swing GridLayout 不会添加 JLabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41130038/

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