我知道这已被问过几次,但没有一个解决方案对我们有用。 我们正在重建一个有世界地图的游戏,并且应该在每个国家都展示旗帜。我们通过使用图形方法使其工作(有点),但这不是持久性的,我们也不能通过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();
}
}
答案 0 :(得分:0)
我们正在重建一个有世界地图的游戏,并且应该在每个国家/地区展示旗帜。
您可以轻松地将JLabel添加到任何其他组件,包括Jlabel。
基本代码是:
META-INF/MANIFEST.MF
我们无法通过var名称添加标记。
你可以保留所有标志的Hashmap:
JLabel background = new JLabel( new ImageIcon(...) );
background.setLayout( null );
JLabel flag = new JLabel( new ImageIcon(...) );
flag.setSize( flag.getPrefferedSize() );
flag.setLocation(....);
background.add( flag );
然后,当您想要访问该标记时,只需使用Hashmap<String, JLabel> flags = new Hashmap<String, JLabel>()
flags.add("theCountryName", theFlag);
的{{1}}方法。