Réglage de la largeur fixe de JTextArea tandis que la hauteur doit être ajustée automatiquement à son contenu

Quand je exécuter l'exemple de code ci-dessous la largeur de JTextArea est fixe (100px), tandis que sa hauteur est réglé de façon dynamique comme je vous tapez du texte.

Ainsi, par exemple, je commence avec ceci:

--------------------
| some text        |
--------------------

et que je tape plus de texte à la hauteur de JTextArea développe de façon à ce qu'il s'adapte le contenu tout en préservant la largeur:

--------------------
| some text, some  |
| other longer text|
| etc...           |
--------------------

Comment puis-je le double de la largeur de JTextArea?
Quand je le fais en changeant preferredSize la hauteur n'est pas dynamique plus.

public class TestTextArea extends JFrame {

    public static void main(String[] args) {
        new TestTextArea().setVisible(true);
    }

    public TestTextArea() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(0,0,800,600);
        setContentPane(createPane());
    }

    protected Container createPane() {
        JTextArea textArea = createTextArea();

        //------------------------------------------
        //UNCOMMENT TO DOUBLE THE WIDTH OF JTextArea

//       Dimension oldPrefSize = textArea.getPreferredSize();
//       Dimension newPrefSize = new Dimension(oldPrefSize.width * 2, oldPrefSize.height);
//       textArea.setPreferredSize(newPrefSize);

        JPanel pane = new JPanel(new FlowLayout());
        pane.add(textArea);
        return pane;
    }

    protected JTextArea createTextArea() {
        JTextArea textArea = new JTextArea();
        textArea.setWrapStyleWord(true);
        textArea.setLineWrap(true);
        return textArea;
    }

}

OriginalL'auteur Michal Vician | 2012-06-13