Как сделать так, чтобы текст, сгенерированный JButton, снова появлялся в том же месте, если щелкнуть дважды? - PullRequest
0 голосов
/ 23 мая 2019

У меня есть JButton, который отображает случайный текст при нажатии, но моя проблема в том, что, если я нажму на него дважды, он снова отобразит случайный текст, но рядом с первым, когда я хочу, чтобы он отображался точното же самое место, чем первое (надеюсь, я понимаю, что я говорю, ха-ха)

Я уже пытался погуглить проблему и искать в reddit и stackoverflow, но не смог найти то, что я 'm ищет

код кнопки:

butt = new JButton("Generate");
        butt.setFont(new Font("Tahoma", Font.BOLD, 12));
        butt.setBackground(Color.WHITE);
        butt.addActionListener(new ActionListener() {
            public void actionPerformed (ActionEvent e) {
                RandomString yep = new RandomString();
                String c = yep.nextString();
                text = new JTextArea("                                                                          "+c,0,0);
                text.setLineWrap(true);
                text.setBounds(10,10,100,60);
                text.setFont(new Font("Courier", Font.BOLD, 14));

                text.setEditable(false);
                p3.add(text,BorderLayout.CENTER);
                f.remove(p4);
                f.add(p3,BorderLayout.CENTER);
            }
        });

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

Я действительно надеюсь, что это понятно!Спасибо за любую помощь, которая как последние штрихи к этой программе:)

1 Ответ

0 голосов
/ 23 мая 2019

Вы создаете JTextArea каждый раз, когда выполняете действие!Переместите JTextArea из actionPerformed и установите текст.

JTextArea text = new JTextArea();
JButton button = new JButton("Generate");
....
button.addActionListener(new ActionListener() {
    ....
    String c = yep.nextString();
    text.setText(c);
    ....
}
...