Java/Swing 层标签在顶部(如果彼此)



我知道这个问题已经被问过好几次了,但没有一个解决方案对我们有用。 我们正在重新创建一个具有世界地图的游戏,并且应该在每个国家/地区显示旗帜。我们通过使用图形方法让它工作(有点(,但这不是持久的,我们也无法通过 var 名称处理标志。

这就是为什么我们要把每个旗帜都放在一个JLabel中,并将它们画在gamePane内,但要画在它们特定的坐标上。因此,我们需要能够使用 z 轴进行定位。

GamePane有一个JLabel,里面有一个ImageIcon,应该形成背景。最重要的是,我们想要创建标志

一些代码(可能没有帮助(:-

gamePane = new JPanel();
[...]
public void paintFlagLabel() {
for (Country currentCountry : risiko.getCountryList()) {
JLabel flag = new JLabel();
int x = currentCountry.getX();
int y = currentCountry.getY();
if (currentCountry.getOwningPlayer().equals(this.player)) {
flag.setIcon(new ImageIcon(greenFlag));
} else {
flag.setIcon(new ImageIcon(redFlag));
}
String coordinates = "pos " + x + " " + y;
gamePane.add(flag, coordinates);
gamePane.revalidate();
gamePane.repaint();
}
}

我们正在重新创建一个具有世界地图的游戏,并且应该在每个国家/地区显示旗帜。

您可以轻松地将 JLabel 添加到任何其他组件,包括 Jlabel。

基本代码为:

JLabel background = new JLabel( new ImageIcon(...) );
background.setLayout( null );
JLabel flag = new JLabel( new ImageIcon(...) );
flag.setSize( flag.getPrefferedSize() );
flag.setLocation(....);
background.add( flag );

我们不能用VAR名称来称呼旗帜。

您可以保留所有标志的哈希图:

Hashmap<String, JLabel> flags = new Hashmap<String, JLabel>()
flags.add("theCountryName", theFlag);

然后,当您要访问该标志时,您只需使用Hashmapget(...)方法即可。

相关内容

  • 没有找到相关文章

最新更新