Прокрутите JScrollPane вниз - PullRequest
       32

Прокрутите JScrollPane вниз

44 голосов
/ 01 марта 2011

Мне нужно прокрутить JScrollPane вниз. JScrollPane содержит JPanel, который содержит несколько JLabel's.

Чтобы прокрутить вверх, я просто делаю:

scrollPane.getViewport().setViewPosition(new Point(0,0));

а как мне прокрутить точно до самого дна? (Слишком далеко, и это дрожит)

Ответы [ 12 ]

0 голосов
/ 02 августа 2016
// Scroll to bottom of a JScrollPane containing a list of Strings.

JScrollPane      scrollPane;
DefaultListModel listModel;
JList            list;

listModel = new DefaultListModel();

list = new JList(listModel);
list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
list.setLayoutOrientation(JList.VERTICAL);
list.setVisibleRowCount(-1); // -1 = display max items in space available

scrollPane = new JScrollPane(list);
scrollPane.setPreferredSize(new Dimension(200, 50));

// Append text entries onto the text scroll pane.
listModel.addElement("text entry one");
listModel.addElement("text entry two");
listModel.addElement("text entry three");
listModel.addElement("text entry four");

// Get the index of the last entry appended onto the list, then
// select it, and scroll to ensure it is visible in the vewiport.
int lastNdx = listModel.getSize() - 1;
list.setSelectedIndex(lastNdx);
list.ensureIndexIsVisible(lastNdx);

JPanel panel = new JPanel();
panel.add(scrollPane);
0 голосов
/ 01 сентября 2014

Если вы посмотрите документацию JTextArea

public void select (int selectionStart, int selectionEnd)

Выбирает текст между указанными начальными и конечными позициями. Этот метод устанавливает начальную и конечную позиции выделенного текста, применяя ограничение, согласно которому начальная позиция должна быть больше или равна нулю. Конечная позиция должна быть больше или равна начальной позиции и меньше или равна длине текста текстового компонента.

Если вызывающая сторона предоставляет значения, которые являются несовместимыми или выходят за пределы, метод принудительно применяет эти ограничения без каких-либо сбоев. В частности, если начальная позиция или конечная позиция больше длины текста, она сбрасывается, чтобы равняться длине текста. Если начальная позиция меньше нуля, она сбрасывается в ноль, а если конечная позиция меньше начальной позиции, она сбрасывается в начальную позицию.

Таким образом, простое решение - jTextArea.select (Integer.MAX_VALUE, 0); и пусть Java разберется!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...