Есть ли функция, подобная changeSelection(), для выбора строки, но в верхней части таблицы, а не в нижней?

У меня есть jTable с деревом, которое автоматически выбирает соответствующую строку из предыдущего действия. Но прокрутите changeSelection и выберите строку как последнюю видимую внизу. Для меня это неудобно, потому что это дерево, и гораздо лучше прокручивать и выбирать строку, как первую видимую в верхней части таблицы.

Я пытаюсь table.scrollRectToVisible(table.getCellRect(row,column, true)); получить тот же результат и пробовал установить значение scrollBar, но я не знаю правильного значения, потому что панель может изменять размер.

Я ожидаю, что автоматически прокрутится до строки, и эта строка будет отмечена вверху таблицы. Теперь автоматическая прокрутка к строке отмечена внизу таблицы.


person muton    schedule 11.07.2019    source источник


Ответы (1)


Метод scrollRectToVisible(...) только прокручивает JViewport из JScrollPane, чтобы убедиться, что Rectangle виден. Итак, когда вы прокручиваете вниз. Он будет отображаться внизу. Если вы прокручиваете вверх, он будет отображаться вверху.

Более простой способ управлять прокруткой — установить позицию JViewport самостоятельно:

JViewport viewport = (JViewport)scrollPane.getViewport();
Rectangle rectangle = table.getCellRect(row, column, true);
Point point = new Point(rectangle.x, rectangle.y);
viewport.setViewPosition( point );
person camickr    schedule 11.07.2019
comment
Безопасно ли это для координат вне диапазона, например, при попытке установить последнюю строку в верхнюю часть представления? - person Mark Jeronimus; 11.07.2019