Как ссылаться на имя переменной, используя значения переменной - PullRequest
0 голосов
/ 15 июня 2019

Хорошо.Для моего проекта в области компьютерных наук мы должны создать программу или игру, которая поразит нашего учителя.Я выбрал Battleship и, используя пользовательский интерфейс Netbeans Design, сделал основные наброски для своего интерфейса.

Итак, по сути, один из моих методов, который устанавливает JPanel в синий цвет, когда вы назначаете ему корабль, я не хочу писать 400 строк кода, описывающих операторы для каждого возможного блока, который они могли бы назначить своему кораблю.и мне было интересно, есть ли способ ссылаться на значение переменной в имени JPanel.Я покажу вам, что я имею в виду.

Таким образом, var - это местоположение корабля, уже полученное от Пользователя.pA1 будет панелью игрока на A1.

public static void pSetShip(String var){
        var=("p"+var);
        if (var.equals("pA1")){
            pA1.setBackground(Color.BLUE);
        }
}

Есть ли какой-нибудь возможный способ вместо установки каждого отдельного поля с использованием операторов if, которые я мог бы сделать:

public static void pSetShip(String var){
        var=("p"+var);
        (VALUE OF VAR VARIABLE).setBackground(Color.BLUE);
}

Любая помощь будет принята с благодарностью!

1 Ответ

2 голосов
/ 15 июня 2019

Да, при условии, что они реализуют общий интерфейс . Но вам нужно будет хранить их в чем-то. Предполагая, что они имеют тип JComponent, я бы использовал Map<String, JComponent> как

static Map<String, JComponent> map = new HashMap<>();
static {
    map.put("pA1", pA1);
    // ... for all valid components.
}

Тогда вы можете использовать его как

public static void pSetShip(String var){
    map.get("p"+var).setBackground(Color.BLUE);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...