6

以下のサンプルコードを実行すると、JTextAreaの幅は固定(100px)になりますが、テキストを入力すると高さが動的に調整されます。

たとえば、私はこれから始めます。

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

さらにテキストを入力すると、JTextAreaの高さが拡大し、幅を維持しながらコンテンツにフィットします。

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

JTextAreaの幅を2倍にするにはどうすればよいですか?高さを変えてやると、preferredSizeもうダイナミックではありません。

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;
    }

}
4

3 に答える 3

5

この方法を使用しJTextArea#setColumnsて幅を調整します

于 2012-06-13T16:28:27.827 に答える
2

linewrapをtrueに設定=>textArea.setLineWrap(true); これにより、最大行幅=textareaが次のようになります。

于 2016-10-27T12:06:37.587 に答える
0

このコード行を変更しますtextArea.setPreferredSize(newPrefSize); textArea.setSize(newPrefSize);へ 高さは動的に調整されます。

于 2014-10-03T14:07:10.480 に答える