6

だから、私はJPanel(BoxLayout)にJTextAreaを持っています。また、JPanel の残りの部分を埋めるボックス フィラーもあります。JTextArea を single-line-height で開始し (それを管理できます)、必要に応じて拡大および縮小する必要があります。

ワードラップが有効になっています。新しい行が追加/削除されたときに高さを調整する必要があります。

documentListener と getLineCount() で試しましたが、wordwrap-newlines を認識しません。

可能であれば、フォントをいじるのは避けたいと思います。

そして、スクロールペインはありません。JTextArea が常に完全に表示されていることが不可欠です。

4

1 に答える 1

13

JTextAreaかなり特殊な副作用があり、適切な条件では自然に成長します。シンプルな 2 行のテキスト エディター (1 行あたりの文字数制限、最大 2 行) をセットアップしようとしたときに、偶然これに出くわしました...

基本的に、適切なレイアウト マネージャーがあれば、このコンポーネントは自然に成長します。これは理にかなっていますが、私は驚きました...

私はとても小さいです私が成長するのを見て

さらに、興味がある場合は、コンポーネントのサイズが変更されたときに監視するために aComponentListenerを使用することもできます...

public class TestTextArea extends JFrame {

    public TestTextArea() {

        setLayout(new GridBagLayout());

        JTextArea textArea = new JTextArea();
        textArea.setColumns(10);
        textArea.setRows(1);
        textArea.setLineWrap(true);
        textArea.setWrapStyleWord(true);

        add(textArea);

        setSize(200, 200);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);

        textArea.addComponentListener(new ComponentAdapter() {

            @Override
            public void componentResized(ComponentEvent ce) {

                System.out.println("I've changed size");

            }

        });

    }


    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        new TestTextArea();
    }

}
于 2012-08-18T20:48:43.137 に答える