2

我对我的 JTextArea 感到非常惊讶。在JTextArea JAVAdoc之后,我尝试创建一个长字符串的 JTextArea,并希望我的行自动换行。

JTextArea text = new JTextArea(myLongString,10,100);
text.setLineWrap(true);
text.setWrapStyleWord(true);
myContainer.add(text);

但实际上我的文本超出了我的框架,并且每行的字符数约为 180。也许我不明白,或者问题出在布局管理中。但是为了避免布局复杂化,我将其简化为基本框架>面板>文本区域。

请注意,英语不是我的母语。

public class myTest extends JFrame
{

    public myTest()
    {
        JPanel simplePanel = new JPanel();
        String alongString = "Accusata consulatu vix ad, eruditi albucius liberavisse est no. Platonem reprehendunt qui ea. Dicta recteque referrentur an his, id facete maiorum vulputate vim. At suas oratio mnesarchum quo. Quidam omnium necessitatibus ex sea, vix soleat quaerendum conclusionemque ut, case malorum nam an.No quis suas discere nam, nam ex nostro fastidii vivendum. Sed cu nobis ullamcorper. Has at doctus ponderum honestatis. In facer dicam corpora vis.";
        JTextArea myText = new JTextArea(alongString,10,100 );

        this.setSize(800, 600);

        myText.setLineWrap(true);
        myText.setWrapStyleWord(true);

        simplePanel.add(myText);
        this.add(simplePanel);
        this.validate();
        this.setVisible(true);

    }

    public static void main(String[] args)
    {
        new myTest();
    }
}
4

2 回答 2

2

问题是您的 jtext 区域是带有默认布局管理器的面板。你需要改变它的东西。查看下面修改后的代码,并告诉我它是否适合您。

public MyTest()
{


    String alongString = "Accusata consulatu vix ad, eruditi albucius liberavisse est no. Platonem reprehendunt qui ea. Dicta recteque referrentur an his, id facete maiorum vulputate vim. At suas oratio mnesarchum quo. Quidam omnium necessitatibus ex sea, vix soleat quaerendum conclusionemque ut, case malorum nam an.No quis suas discere nam, nam ex nostro fastidii vivendum. Sed cu nobis ullamcorper. Has at doctus ponderum honestatis. In facer dicam corpora vis.";
    JTextArea myText = new JTextArea(alongString,10,100 );

    myText.setLineWrap(true);
    myText.setWrapStyleWord(true);

    JPanel simplePanel = new JPanel(new BorderLayout(5, 5));
    simplePanel.add(myText, BorderLayout.CENTER);

    this.add(simplePanel);
    this.validate();
    this.setSize(800, 600);
    this.setVisible(true);

}

public static final void main(String ... args) {
    new MyTest();
}
于 2012-06-08T14:56:59.580 回答
1

您可能需要将 JTextArea 放在 JScrollPane 中。如果您的 JTextArea 在父容器中是松散的,则父容器的布局管理器将确定 JTextArea 的大小。

我不确定您正在寻找什么功能,但以下代码用 JTextArea 填充 JFrame。如果框架变得太小,则会出现滚动条,以便所有文本都可见。

我已经删除了行和列的 JTextArea 构造函数参数。注意:“columns”参数并不意味着可以容纳多少个字母。我不确切知道“列”是什么,但它似乎比典型的字母更宽。

我还删除了“myPanel”,并将 JScrollPane 直接添加到 JFrame。

    String alongString = "Accusata consulatu vix ad, eruditi albucius liberavisse est no. Platonem reprehendunt qui ea. Dicta recteque referrentur an his, id facete maiorum vulputate vim. At suas oratio mnesarchum quo. Quidam omnium necessitatibus ex sea, vix soleat quaerendum conclusionemque ut, case malorum nam an.No quis suas discere nam, nam ex nostro fastidii vivendum. Sed cu nobis ullamcorper. Has at doctus ponderum honestatis. In facer dicam corpora vis.";
    JTextArea myText = new JTextArea(alongString);
    JScrollPane scrollPane = new JScrollPane(myText);

    this.setSize(800, 600);

    myText.setLineWrap(true);
    myText.setWrapStyleWord(true);

    this.add(scrollPane);
    this.validate();
    this.setVisible(true);
于 2012-06-08T14:29:49.660 回答