textArea.setText("") doesn't clear the text in a JTextArea

Eric picture Eric · Feb 17, 2016 · Viewed 8.6k times · Source

I am trying to clear the text in a JTextArea, and looking at other questions, it seems like calling textArea.setText(""/null) will clear the text area. This does not seem to be happening with my code, and it appends the new text to the text already in the area. Can anyone see something wrong in my code?

public class morseJFrame extends JFrame implements ActionListener {

private static final long serialVersionUID = 1L;
private JPanel contentPane;
public JTextPane textPane = new JTextPane();
public JTextArea textArea = new JTextArea();

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                morseJFrame frame = new morseJFrame();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the frame.
 */
public morseJFrame() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 508);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(null);

    textPane.setBounds(5, 5, 424, 194);
    textPane.setText("Enter your alphanumberic text here to translate.");
    contentPane.add(textPane);

    JButton btnTranslate = new JButton("Translate");
    btnTranslate.setBounds(5, 419, 213, 41);
    btnTranslate.addActionListener(this);
    add(btnTranslate);
    contentPane.add(btnTranslate);

    textArea.setBounds(5, 210, 424, 203);
    contentPane.add(textArea);

    JButton btnPlaySound = new JButton("Play Morse Sound");
    btnPlaySound.setBounds(228, 419, 201, 41);
    contentPane.add(btnPlaySound);
}

public void actionPerformed(ActionEvent e) {
    String command = e.getActionCommand();
    if (command.equals("Translate")) {
        String text = textPane.getText();
        String translatedText = MorseTranslate.doMorse(text);
        textArea.setText("");
        textArea.setText(translatedText);
    }
}

}

Answer

MadProgrammer picture MadProgrammer · Feb 17, 2016

This does not seem to be happening with my code, and it appends the new text to the text already in the area

So based on this code...

String text = textPane.getText();
String translatedText = MorseTranslate.doMorse(text);
textArea.setText("");
textArea.setText(translatedText);

I would suggest that the problem is with your MorseTranslate.doMorse which is probably returning the text appended to itself

But, as you can see, this is a matter of "guess work" as we don't have the complete code to go by.

Consider providing a runnable example which demonstrates your problem. This is not a code dump, but an example of what you are doing which highlights the problem you are having. This will result in less confusion and better responses