Изменение глобально определенной статической переменной из слушателя мыши статического метода

1

Я пытаюсь изменить следующую глобально определенную переменную:

static int players;

из следующего метода:

public static void selectPlayers() {

    JButton player1 = new JButton("1 Player");
    player1.addMouseListener(new MouseAdapter() {
        public void mousePressed(MouseEvent arg0) {
            players = 1;
        }
    });
}

Это не влияет на переменную. Переменная глобальна, поэтому к ней можно получить доступ из основного метода. Каков наилучший способ изменить переменную?

Теги:
static
global-variables
static-methods

2 ответа

3
Лучший ответ

Если я не ошибаюсь, игроки являются атрибутом не метода. и доступ к статическому атрибуту должен быть через имя его класса

public Class1{

 static int players;

 public static void selectPlayers() {

   JButton player1 = new JButton("1 Player");
   player1.addMouseListener(new MouseAdapter() {
     public void mousePressed(MouseEvent arg0) {
        Class1.players = 1;
    }
 });
 }
}
  • 0
    Это сработало. Спасибо!
1

Чтобы получить доступ к правильной переменной players, вам необходимо вызвать ее в нужном месте, другими словами, какой бы класс не был определен.

если он находится в одном классе, вызовите this.players = 1. Если он находится в другом классе, вы должны вызвать className.players = 1. Если ваш код компилируется, это означает, что вы изменяете локальную переменную или глобальную переменную в том же классе, а тот, который вам нужен, находится в другом.

  • 0
    Обратите внимание, что это статическая переменная.
  • 0
    @PaulBellora, который ничего не меняет ...
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню