2012-01-27 59 views
2

我有一个带有JPanel的ScrollPane,我在JPanel中添加了大约200个组件。知道我希望Vertical-Slider移动到特定的组件。 但问题是,当我打电话:等到repaint组件完成

myButton.scrollRectToVisible(myButton.getBounds()); 

getBounds()给我的宽度和高度回来0

显然元素仍然不涂。我如何等待repaint()方法完成所有工作,以便我可以做scrollRectToVisible()

编辑:

也许它帮助,如果我给我的代码的简单例子:

addElementsToPanel(); //function where I add Elements to the Panel 

myJPanel.revalidate(); 
myJPanel.repaint(); 

myButton.scrollRectToVisible(myButton.getBounds()); 
+0

为了尽快提供更好的帮助,请发布[SSCCE](http://sscce.org/)。 – 2012-01-27 12:04:33

+0

你有没有试过等待一个'ComponentEvent.COMPONENT_SHOWN'事件? – Viruzzo 2012-01-27 12:06:20

+0

不,我不。这个怎么做? – Leon 2012-01-27 13:08:07

回答

4

SwingUtilities.invokeLater()

+0

伟大的工作,我已经把我把滑块移动到SwingUtilities.invokeLater()中的正确位置的线,这个工程。谢谢你,自从工作多年以来,我一直在努力工作! PS:多一点答案,然后invokeLater方法调用会很好;下次 ;) – Leon 2012-01-27 13:54:00