写作时出现JTextArea问题。 JFrame没有限制文本

时间:2012-01-02 23:24:07

标签: java swing jtextarea

我的JTextArea存在问题。当我写作时,它会向下移动,我不知道如何限制它,所以JFrame

以下的行不再

照片: describing my problem

4 个答案:

答案 0 :(得分:1)

您需要将JTextArea个实例放在JScrollPane中。这将使文本区域的内容可滚动。

答案 1 :(得分:1)

经过大量研究,我找到了解决方案!我发现根据程序的设计,可以滚动JTextArea是This link是帮助我使JTextPane工作的原因,也是我将用作参考的东西。这不是唯一的方法,但如果您有任何疑问,请不要犹豫!感谢。


正如其他人所说,你需要将你的JTextArea包装在JScrollPane

public class ScrollableJTextArea
{
    JTextArea jTextArea     = new JTextArea();

    // Wrap JTextArea in a JScrollPane
    JScrollPane jScrollPane = new JScrollPane(jTextArea);
    ...

为GUI定义构造函数

ScrollableJTextArea()
{
    jTextArea.setLineWrap(true); // wrap text horizontally
    jScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
    jScrollPane.setPreferredSize(new Dimension(380,350));
    // and so on...
}

你的主要方法

public static void main(String[] args)
{
    ScrollableJTextArea sjta = new ScrollableJTextArea();
    JFrame frame             = new JFrame();
    JPanel center            = new JPanel();

    // I've read on many forums as well as heard from many fellow classmates 
    // that it's better to add content to a panel rather than the frame itself
    frame.add(center, BorderLayout.CENTER);
    center.add(sjta.jScrollPane);

    frame.setSize(400, 400);
    frame.setVisible(true);
}

答案 2 :(得分:0)

每当主体获得另一个“线”并且getRows()大于getLineCount()时,

比较getLineCount()getRows(),然后使用getText()和{{1 }}

答案 3 :(得分:0)

您可以JScrollPane这样做。

private JTextArea textArea = new JTextArea(12, 30);

JScrollPane scrollPane = new JScrollPane(textArea);  // create ScrollPane and add textArea in it
setPreferredSize(new Dimension(450, 110));
add(scrollPane, BorderLayout.CENTER); // or whatever layout you are using

但是你想要这样做是没有意义的。但是,如果您不想使用JScrollPane,可以使用以下代码强制JTextArea转到JTextArea的末尾。

textArea.setCaretPosition(textArea.getDocument().getLength());

希望这有帮助。