Использование переменных вне метода actionPerformed () - PullRequest
2 голосов
/ 20 ноября 2011

Я относительно новичок в Java и решил немного повозиться с Swing.Я хотел создать приложение, которое обновляет счетчик вверх или вниз в зависимости от нажатия кнопки.

Все шло отлично, пока я не дошел до того, что мне пришлось добавить слушателя к одной из кнопок.Я добавил кнопку и изменил фрагмент кода, который нашел в Интернете:

    addHome.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e)
        {
            //Execute when button is pressed
            addHomeCount++;
        }
    });

Я хочу увеличить addHomeCount при нажатии кнопки.Если я добавлю

System.out.println(addHomeCount);

в метод, он отлично выведет код в окно консоли.Однако, когда я добавляю тот же код за пределы метода, он просто возвращает 0.

Есть ли способ получить это возрастающее целое число addHomeCount вне метода actionPerformed и поместить его в JLabel?Я читал о getActionCommand (), но я не уверен, что это то, что я ищу здесь.

1 Ответ

3 голосов
/ 20 ноября 2011

Причина, по которой он печатает 0, заключается в том, что код вне слушателя выполняется сразу же. Код слушателя выполняется только тогда, когда вы нажимаете кнопку, так что это происходит только после инструкции print.

Я думаю, все, что вам нужно сделать, это установить текст JLabel из слушателя действия.

JLabel addHomeLabel = new JLabel();
//add label to gui...
addHome.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e)
    {
        //Execute when button is pressed
        addHomeCount++;
        addHomeLabel.setText("Button pressed " + addHomeCount);

    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...