Ярлыки слоя 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,

Другие вопросы по тегам