java – JTextArea自动换行调整大小

前端之家收集整理的这篇文章主要介绍了java – JTextArea自动换行调整大小前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以,我在JPanel(BoxLayout)上有JTextArea.我也有Box填充器填充JPanel的其余部分.我需要我的JTextArea以单行高度开始(我可以管理它),并在需要时扩展和减少.

自动换行已启用,我只需要在添加/删除新行时调整它的高度.

我尝试使用documentListener和getLineCount(),但它无法识别wordwrap-newlines.

如果可能的话,我想避免弄乱字体.

而且,没有滚动面板. JTextArea必须始终完全显示.

解决方法

JTextArea具有相当特殊的副作用,在适当的条件下,它可以自行增长.当我试图设置一个简单的双行文本编辑器时(每行限制字符长度,最多两行),我偶然偶然发现了这个…

基本上,给定合适的布局管理器,这个组件可以自己增长 – 它实际上是有道理的,但让我感到惊讶……

此外,您可能希望使用ComponentListener来监视组件何时更改大小,如果这是您感兴趣的…

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

}

猜你在找的Java相关文章