我知道这个问题已经被问过好几次了,但没有一个解决方案对我们有用。 我们正在重新创建一个具有世界地图的游戏,并且应该在每个国家/地区显示旗帜。我们通过使用图形方法让它工作(有点(,但这不是持久的,我们也无法通过 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);
然后,当您要访问该标志时,您只需使用Hashmap
的get(...)
方法即可。