Ярлыки слоя Java/Swing сверху друг друга
Я знаю, что об этом спрашивали несколько раз, но ни одно из решений не помогло нам. Мы воссоздаем игру с картой мира, которая должна показывать флаги в каждой стране. Мы работали (вроде) с помощью графического метода, но это не было постоянным, и мы не могли указать флаг с помощью имени переменной.
Вот почему мы хотим иметь каждый флаг в 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();
}
}
1 ответ
Мы воссоздаем игру с картой мира, которая должна показывать флаги в каждой стране.
Вы можете легко добавить 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 );
мы не можем указать флаг с помощью имени переменной.
Вы можете сохранить Hashmap всех флагов:
Hashmap<String, JLabel> flags = new Hashmap<String, JLabel>()
flags.add("theCountryName", theFlag);
Затем, когда вы хотите получить доступ к флагу, вы просто используете get(...)
метод Hashmap
,