Подтвердить что ты не робот

Прокрутки в JTextArea

Как добавить полосы прокрутки в JTextArea?

4b9b3361

Ответ 1

Как говорит Фредрик в его ответе, простой способ добиться этого - разместить JTextArea в JScrollPane. Это позволит прокручивать область просмотра JTextArea.

Только для полноты, как это можно добиться:

JTextArea ta = new JTextArea();
JScrollPane sp = new JScrollPane(ta);   // JTextArea is placed in a JScrollPane.

Как только JTextArea включен в JScrollPane, следует добавить JScrollPane туда, где должна находиться текстовая область. В следующем примере текстовая область с полосами прокрутки добавляется к JFrame:

JFrame f = new JFrame();
f.getContentPane().add(sp);

Благодарим kd304 за упоминание в комментариях, что нужно добавить JScrollPane в контейнер, а не в JTextArea. Я считаю, что распространять ошибку в том, чтобы добавить текстовую область непосредственно в контейнер назначения, а не прокрутку панель с текстовой областью.

В следующих статьях Учебники Java приведены более подробные сведения:

Ответ 3

Сначала вам нужно определить JTextArea как обычно:

public final JTextArea mainConsole = new JTextArea("");

Затем вы помещаете JScrollPane поверх TextArea

JScrollPane scrollPane = new JScrollPane(mainConsole);
scrollPane.setBounds(10,60,780,500);
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

В последней строке указано, что вертикальная полоса прокрутки всегда будет там. Аналогичная команда для горизонтальной. В противном случае полоса прокрутки будет отображаться только тогда, когда это необходимо (или никогда, если вы используете _SCROLLBAR_NEVER). Я предполагаю, что это ваш звонок, каким образом вы хотите его использовать.

Вы также можете добавить wordwrap в JTextArea, если хотите: Путеводитель здесь

Удачи,
Норма M

P.S. Убедитесь, что вы добавили ScrollPane в JPanel и не добавляете JTextArea.

Ответ 4

            txtarea = new JTextArea(); 
    txtarea.setRows(25);
    txtarea.setColumns(25);
    txtarea.setWrapStyleWord(true);
    JScrollPane scroll = new JScrollPane (txtarea);
    panel2.add(scroll); //Object of Jpanel

Вышеуказанные строки автоматически показывают вам как горизонтальные, так и вертикальные полосы прокрутки.

Ответ 5

Я просто хотел сказать спасибо первому первому сообщению пользователя, которого я считаю "coobird". Я новичок в этом веб-сайте stackoverflow.com, но я не могу поверить, насколько он полезен и полезен в этом сообществе... поэтому спасибо всем вам за то, что вы опубликовали отличные советы и посоветовали другим. Вот что такое сообщество.

Теперь coobird правильно сказал:

Как упоминает Фредрик в своем ответе, простой способ добиться этого - разместить JTextArea в JScrollPane. Это позволит прокручивать область просмотра JTextArea.

Я хотел бы сказать:

Вышеприведенное утверждение абсолютно верно. На самом деле, я боролся с этим в Eclipse, используя плагин WindowBuilder Pro, потому что я не мог понять, какая комбинация виджетов поможет мне в этом. Однако, благодаря сообщению coobird, я смог решить это разочарование, которое заняло у меня много дней.

Я также хотел бы добавить, что я относительно новичок в Java, хотя у меня есть прочная основа в принципах. Фрагменты кода и советы, которые вы здесь даете, чрезвычайно полезны.

Я просто хочу добавить еще один бит, который может помочь другим. Я заметил, что Coobird поместил код следующим образом (чтобы показать, как создать прокручиваемую текстовую область). Он писал:

JTextArea ta = new JTextArea();
JScrollPane sp = new JScrollPane(ta);   

Я хотел бы сказать спасибо приведенному фрагменту кода из coobird. Я не пробовал это прямо так, но я уверен, что все будет хорошо. Однако некоторым может быть полезно сообщить, что когда я это сделал с помощью инструмента WindowBuilder Pro, у меня появилось нечто более похожее на следующее (что, по моему мнению, является чуть более "косвенным" способом для WindowBuilder для достижения того, что вы см. в двух строках выше. Мой код выглядит следующим образом:

JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(23, 40, 394, 191);
frame.getContentPane().add(scrollPane);

JTextArea textArea_1 = new JTextArea();
scrollPane.setViewportView(textArea_1);`

Обратите внимание, что WindowBuilder в основном создает JScrollPane с именем scrollpane (в первых трех строках кода)... затем он устанавливает viewportview по следующей строке: scrollPane.setViewportView(textArea_1). Таким образом, по сути, эта строка добавляет textArea_1 в мой код (который, очевидно, JTextArea), который должен быть добавлен в мою JScrollPane **, о которой как раз говорил кубизм).

Надеюсь, это полезно, потому что я не хотел, чтобы разработчики WindowBuilder Pro путались, думая, что советник Coobird не подходит или что-то в этом роде.

Лучшие пожелания всем и счастливое кодирование:)

Ответ 6

Простой способ добавления JTextArea в JScrollBar с помощью JScrollPan

import javax.swing.*;
public class ScrollingTextArea 
{
     JFrame f;
     JTextArea ta;
     JScrollPane scrolltxt;
public ScrollingTextArea() 
{
    // TODO Auto-generated constructor stub

    f=new JFrame();
    f.setLayout(null);
    f.setVisible(true);
    f.setSize(500,500);
    ta=new JTextArea();
    ta.setBounds(5,5,100,200);

    scrolltxt=new JScrollPane(ta);
    scrolltxt.setBounds(3,3,400,400);

    f.add(scrolltxt);

}

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

}