Java - установка положения jScrollBar

1

У меня JTable в JScrollPane, и таблица получает новые строки данных каждый раз. В конце концов, есть больше строк данных, чем может отображаться сразу, и поэтому ScrollPane запускается. Я хочу, чтобы панель прокрутки прыгала вниз (до максимального значения) каждый раз при добавлении новых данных, поэтому я написал это, что вызывается сразу после добавления новой строки:

jScrollPane1.getVerticalScrollBar().setValue(jScrollPane1.getVerticalScrollBar().getMaximum());

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

Мое подозрение в том, что новый ряд данных каким-то образом добавляется только после завершения метода (он активируется после нажатия JButton и активации метода actionPerformed).

Как это исправить?

Теги:
swing
jscrollpane
jscrollbar

1 ответ

2
Лучший ответ

вам нужно поставить его в очередь в конце текущих событий обработки, используя SwingUtilities.invokeLater; это будет выглядеть так:

SwingUtilities.invokeLater(new Runnable() {
  public void run() {
   jScrollPane1.getVerticalScrollBar().setValue(jScrollPane1.getVerticalScrollBar().getMaximum());
  }
 }
);

иначе будет выполняться во время текущего события и произойдет до фактического обновления.

не забудьте сделать их переменными final, чтобы передать их в анонимный внутренний класс

Ещё вопросы

Сообщество Overcoder
Наверх
Меню