相关文章推荐
星星上的钥匙  ·  纳斯达克中国金龙指数跌1% ...·  1 年前    · 
稳重的冰淇淋  ·  光遇:注销账号后悔了,有办法补救吗?可以试试 ...·  1 年前    · 
坚强的山楂  ·  桃色公寓:在没有快捷酒店的时代……_百科TA说·  1 年前    · 
不拘小节的山羊  ·  风陵渡口初相遇,一见杨过误终身~ ...·  1 年前    · 
爱逃课的墨镜  ·  国足新帅扬科维奇:需要愿意为球队拼命的队员·  1 年前    · 
小百科  ›  具有自适应宽度问题的JTextArea开发者社区
骑白马的海龟
1 年前
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
提问

问 具有自适应宽度问题的JTextArea

Stack Overflow用户
提问于 2013-07-05 08:19:12
EN

我想要一个 JTextArea ,它的行为方式如下:

  1. 始终显示垂直滚动条
  2. 当文本到达行尾时,它将继续在下一行(而不是继续在同一行上但被隐藏)。
  3. 当窗口调整大小时,文本将被刷新,因此,例如,如果窗口更大,文本的高度就会降低。

1点很简单,但是我找不到第2点和第3点的方法,所以任何帮助都会受到感谢。下面是我编写的示例代码:

代码语言: javascript
复制
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);
}
3 218 0 票数 0
EN
word-wrap
java
swing
jtextarea

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-05 08:23:32

这是:

代码语言: javascript
复制
jtextarea.setLineWrap(true);
jtextarea.setWrapStyleWord(true);

当到达当前行的末尾时,将使textarea在下一行继续。基本上, jtextarea.setLineWrap(true) 告诉textarea继续到下一行的断线词,也就是说,您将得到如下内容:

代码语言: javascript
复制
 _________
|I'm so co|
|ol       |
|_________|

然后, jtextarea.setWrapStyleWord(true) 告诉textarea启用单词包装,因此结果如下:

代码语言: javascript
复制
 _________
|I'm so   |
|cool     |
|_________|

若要在帧调整大小时调整 JTextArea 大小,请使用 ComponentListener ;

代码语言: javascript
复制
jframe.addComponentListener(new ComponentAdapter(){
    public void componentResized(ComponentEvent e) {
        //the frame was resized, resize the textarea here
});

更新

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

票数 1
EN

Stack Overflow用户

发布于 2013-07-05 08:30:39

正如在另一个答案中提到的,与行包装和包装样式相关的两个 JTextArea 方法很重要,但是组件侦听器是不必要的。请参阅代码的这个紧密变体,它建议构造函数的列和行中的文本区域大小,并打包GUI。

代码语言: javascript
复制
import java.awt.BorderLayout;
import javax.swing.*;
public class TestCode2 {
    public static void main(String[] args) {
        JFrame window = new JFrame("Test2");
        window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        JPanel container = new JPanel(new BorderLayout());
        window.add(container);
        JLabel labelNorth = new JLabel("North");
        container.add(labelNorth, BorderLayout.PAGE_START);
        JLabel labelSouth = new JLabel("South");
        container.add(labelSouth, BorderLayout.PAGE_END);
        JTextArea ta = new JTextArea(7,30);
        ta.setWrapStyleWord(true);
        ta.setLineWrap(true);
        JScrollPane taScrollPane = new JScrollPane(ta);
        taScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        taScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        container.add(taScrollPane);
 
推荐文章
星星上的钥匙  ·  纳斯达克中国金龙指数跌1% 热门中概股集体回调_手机新浪网
1 年前
稳重的冰淇淋  ·  光遇:注销账号后悔了,有办法补救吗?可以试试这样做_手机搜狐网
1 年前
坚强的山楂  ·  桃色公寓:在没有快捷酒店的时代……_百科TA说
1 年前
不拘小节的山羊  ·  风陵渡口初相遇,一见杨过误终身~ 风陵渡——只知此地是郭襄初次
1 年前
爱逃课的墨镜  ·  国足新帅扬科维奇:需要愿意为球队拼命的队员
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
小百科 - 百科知识指南
© 2024 ~ 沪ICP备11025650号