Когда я запускаю приведенный ниже пример кода, ширина JTextArea фиксирована (100 пикселей), а его высота динамически регулируется по мере ввода в него текста.
Итак, например, я начинаю с этого:
--------------------
| some text |
--------------------
и по мере того, как я набираю больше текста, высота JTextArea увеличивается, чтобы соответствовать содержимому, сохраняя при этом ширину:
--------------------
| some text, some |
| other longer text|
| etc... |
--------------------
Как удвоить ширину JTextArea?
Когда я делаю это, изменяя предпочитаемый размер
, высота больше не является динамической.
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;
}
}