设置jScrollBar的位置



我在JScrollPane中有一个JTable,该表每隔一段时间就会获得新的数据行。最终会有更多的数据行不能一次显示,于是ScrollPane就开始发挥作用了。我希望滚动窗格每次添加新数据时都跳到底部(到其最大值),所以我写了这个,在添加新行后立即调用:

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

它工作得很好,但有一个问题-它不能滚动到完整的底部。它总是遗漏了表格的一行,您需要手动向下滚动才能到达完整的底部。

我怀疑新的数据行是在方法结束后以某种方式添加的(它是在按下JButton并激活actionPerformed类型的方法后激活的)。

如何解决这个问题?

你需要在当前处理事件结束时使用swingutility . invokelater将其排队;它看起来像这样:

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

将在当前事件期间运行,并将在任何实际更新之前发生。

请记住将它们设为final变量,以便将它们传递给匿名内部类

相关内容

  • 没有找到相关文章