java - Swing JTextArea : Resize Dialog properly after automatic LineWrap

标签 java swing jtextarea word-wrap

我希望我没有错过一些重复的问题,我觉得这应该是微不足道的!

无论如何,我有一个包含文本的 JTextArea ,并且自动换行:

public PleaseResize(){
    super();
    Container cp = this.getContentPane();

    JTextArea area = new JTextArea();
    area.setColumns(20);
    area.setLineWrap(true);
    area.setEditable(false);
    area.setWrapStyleWord(true);
    area.setText("Once upon a midnight dreary, while I pondered, weak and weary, over many a quaint an curious volume of forgotten lore.");
    cp.add(area, BorderLayout.CENTER);

    cp.add(new JButton("Hallo"), BorderLayout.SOUTH);
    this.pack();
}

我希望文本区域垂直调整大小以显示整个文本...但事实并非如此。如果我通过插入 \n 来选择换行符,它会很高兴地调整大小,但通过自动换行,它只会保持原来的大小。

不知何故,我觉得我错过了一些完全明显的东西......

编辑:澄清:

在创建时,我不知道文本将有多少行(由于发生自动换行)。我通过 XML 文件接收文本,换行后它的长度可能在 0 到大约 30 行之间变化。我有垂直空间来显示所有内容,但当没有或只有很少的文本要显示时,我不想滚动或有一个巨大的白色区域。

<小时/>

编辑2:

重新表述问题后,我面临的问题的关键显然不是调整 JTextArea 的大小,而是确保对话框知道它有多大!

所以,这是返回我最终使用的解决方案的链接:An automatic resizing Text above a button?

最佳答案

您需要像下一个 new JScrollPane(area); 一样用 JScrollPane 包装 JTeatArea,然后添加 JScrollPane到您的JFrame

此外,您还可以使用空构造函数创建JTextArea,使用JTextArea(int rows, int cols)指定行数和列数。

关于java - Swing JTextArea : Resize Dialog properly after automatic LineWrap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26650992/

相关文章:

java - 使用 Java Swing 将滚动条添加到 JTextArea 中

java - 为什么 BufferedReader 不缓冲输入?

java - Java中将字符串拆分为字符并与用户输入进行匹配

java - 您如何使用适用于 Java 的 Google Translate v2 API Client Library 发出翻译请求?

java - 如何在 Android 设备上使用 DPI 正确绘制以英寸为单位的精确长度?

java - 如何在JTextArea字段中显示计算区域?就像一张包含税款、总额和零钱的收据

java - 如何正确地将 ActionListeren 添加到自定义 JComponent

Java Swing : Rainbow border for a JComponent

java - SINGLE_INTERVAL_SELECTION 未按预期工作

java - JScrollPane 不起作用