JTextArea проблема при записи.Неограниченные тексты идут вниз JFrame - PullRequest
1 голос
/ 03 января 2012

Проблема с моим JTextArea.Когда я пишу, он идет вниз по рамке, и я не знаю, как его ограничить, поэтому больше нет строк ниже JFrame

Фото: describing my problem

Ответы [ 4 ]

1 голос
/ 09 января 2012

После долгих исследований я нашел решение!Я обнаружил, что создание прокручиваемой JTextArea основано на дизайне программы. Эта ссылка - это то, что помогло мне заставить работать мой 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);
}

1 голос
/ 03 января 2012

Вы хотите разместить экземпляр JTextArea в JScrollPane. Это сделает прокручиваемым содержимое текстовой области.

0 голосов
/ 03 января 2012

Вы можете нам 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());

Надеюсь, это поможет.

0 голосов
/ 03 января 2012

сравнивайте getRows() и getLineCount() всякий раз, когда тело получает другую "линию", а если getLineCount() больше getRows(), то обрезайте, используя getText() и setText()

...