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