Установка фиксированной ширины JTextArea, в то время как высота должна автоматически регулироваться в соответствии с его содержимым.

Когда я запускаю приведенный ниже пример кода, ширина 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;
    }

}
5
задан Robin 13 June 2012 в 16:31
поделиться