полосы прокрутки в JTextArea - PullRequest
44 голосов
/ 27 июня 2009

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

Ответы [ 6 ]

71 голосов
/ 27 июня 2009

Как Фредрик упоминает в своем ответе , простой способ добиться этого - поместить 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 содержат более подробную информацию:

18 голосов
/ 27 июня 2009

Поместите его в JScrollPane

Редактировать: Вот ссылка для вас: http://java.sun.com/docs/books/tutorial/uiswing/components/textarea.html

15 голосов
/ 27 июня 2009

Сначала вы должны определить 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). Я думаю, это ваш звонок, каким образом вы хотите его использовать.

Вы также можете добавить перенос слов в JTextArea, если хотите: Guide Here

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

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

5 голосов
/ 23 декабря 2012
            txtarea = new JTextArea(); 
    txtarea.setRows(25);
    txtarea.setColumns(25);
    txtarea.setWrapStyleWord(true);
    JScrollPane scroll = new JScrollPane (txtarea);
    panel2.add(scroll); //Object of Jpanel

Над указанными линиями автоматически отображаются горизонтальные и вертикальные полосы прокрутки.

2 голосов
/ 01 июля 2013

Я просто хотел сказать спасибо первому первому сообщению от пользователя, которого я считаю "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 **, о которой говорил именно coobird).

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

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

1 голос
/ 02 мая 2016

Простой способ добавить 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();
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...