java - JTextArea 具有自适应宽度问题

标签 java swing jtextarea word-wrap

我想要一个具有以下行为方式的 JTextArea:

  1. 始终显示垂直滚动条

  2. 当文本到达行尾时,它将继续到下一行(而不是继续在同一行但被隐藏)

  3. 调整窗口大小时,文本会刷新,因此,如果窗口较大,文本的高度就会降低。

第 1 点很简单,但我找不到第 2 点和第 3 点的方法,因此任何帮助将不胜感激。这是我编写的示例代码:

public class TestCode2 {

  public static void main(String[] args) {

    JFrame window = new JFrame("Test2");
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    window.setSize(400, 200);

    JPanel container = new JPanel(new BorderLayout());
    window.add(container);

    JLabel labelNorth = new JLabel("North");
    container.add(labelNorth, BorderLayout.NORTH);

    JLabel labelSouth = new JLabel("South");
    container.add(labelSouth, BorderLayout.SOUTH);

    JTextArea ta = new JTextArea();
    JScrollPane taScrollPane = new JScrollPane(ta);
    taScrollPane
        .setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
    taScrollPane
        .setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
    container.add(taScrollPane);

    window.setVisible(true);
  }
}

最佳答案

这个:

jtextarea.setLineWrap(true);
jtextarea.setWrapStyleWord(true);

将使文本区域在到达当前行的末尾时继续下一行。基本上,jtextarea.setLineWrap(true)告诉textarea继续到下一个换行单词,即你会得到类似这样的东西:

 _________
|I'm so co|
|ol       |
|_________|

然后,jtextarea.setWrapStyleWord(true)告诉textarea启用自动换行,所以结果将是这样的:

 _________
|I'm so   |
|cool     |
|_________|

要在框架大小调整时调整 JTextArea 的大小,请使用 ComponentListener

jframe.addComponentListener(new ComponentAdapter(){
    public void componentResized(ComponentEvent e) {
        //the frame was resized, resize the textarea here
    }
});
<小时/>

更新

正如 mKorbel 所说,要调整 JTextArea 的大小,请使用 LayoutManager 并让它完成所有工作

关于java - JTextArea 具有自适应宽度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17484242/

相关文章:

java - 如何更改 JTextArea 中光标的默认位置?

java - JTextArea 中的行

java - 我想通过Java模式表达式提取css图像路径

java - EJB 警告 : WELD-000411: . .. 考虑使用 @WithAnnotations 或具有边界的通用类型来限制事件

java - 有什么方法可以以编程方式在MIUI 10上启用锁定屏幕通知吗?

java - JTextArea 无滚动条

Java - 对象数组到 HashSet

java - 在 main() 中访问 jTextArea

Java - 如何检查 JFrame 是否关闭

java - 在 swing 中单击按钮时显示 JfreeChart