2012-01-27 60 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