java как заставить новый текстовый блок появляться каждый раз, когда нажимается кнопка

Я новичок в Java и пытаюсь сделать простую интерактивную художественную игру с графическим интерфейсом, используя свинг. Прямо сейчас я пытаюсь разбить большой блок текста на разделы, чтобы он легко помещался на экране. Я хочу, чтобы один блок текста отображался в Jtextarea с кнопкой «Продолжить» в нижней части экрана, где каждый раз, когда пользователь нажимает кнопку J, текущий текст исчезает и заменяется новым текстом. Вот соответствующий код:

    public class forwardScreenHandler implements ActionListener{
    public void actionPerformed(ActionEvent event){
        mainTextArea.setText("Nice change!");
        mainTextArea.setText("do it again!");
        mainTextArea.setText("Please be third!");

            }
        }

public void chooseYes(){
    yesnoButtonPanel.setVisible(false);
    continueButtonPanel.setVisible(true);
    continueButtonPanel.setBackground(Color.red);
    continueButton.removeActionListener(contHandler);
    continueButton.addActionListener(userCont);
    position = "yes";
    mainTextArea.setText("Blah Blah Blah");

}

Ясно, что код приведет к тому, что сначала будет показано «бла-бла-бла», а затем, когда я нажму кнопку «Продолжить», окончательный setText «Пожалуйста, будьте третьим!». Я понимаю, что это потому, что я не написал никакого кода, сообщающего Java setText каждый раз, когда нажимается кнопка «Продолжить», но я не могу понять, как это сделать. Как я уже сказал, я новичок, поэтому любое объяснение будет полезно, чтобы я мог понять, что делать.


person Dr. Fishopolis    schedule 20.08.2017    source источник


Ответы (1)


Для этого вам нужно использовать переменную и операторы if.

Объявите переменную на уровне класса для хранения того, сколько раз была нажата кнопка:

private int buttonPressCount = 0;

В прослушивателе действий для кнопки «Продолжить» сначала увеличьте эту переменную, а затем установите текст на основе ее значения.

buttonPressCount++;
switch (buttonPressCount) {
    case 1:
        mainTextArea.setText("Nice change!");
        break;
    case 2:
        mainTextArea.setText("do it again!");
        break;
     case 3:
        mainTextArea.setText("Please be third!");
}
person Sweeper    schedule 20.08.2017
comment
Вау, это было легко! Я думал, что мне нужно использовать какое-то приращение, но пытался сделать это внутри цикла while. Я не знал, что вы можете так увеличиваться в actionlistener. Благодарю вас! - person Dr. Fishopolis; 20.08.2017