Как добавить полосы прокрутки в JTextArea?
Прокрутки в JTextArea
Ответ 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 приведены более подробные сведения:
Ответ 2
Поместите его в JScrollPane
Изменить: Вот ссылка для вас: http://java.sun.com/docs/books/tutorial/uiswing/components/textarea.html
Ответ 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();
}
}