我有一个包含JPanel的JScrollPane.我用许多按钮填充这个JPanel.
是否有可能获得当前显示的按钮?
我知道我可以访问JPanel的子节点,jpanel.getComponents()但这些都是此窗格中的组件; 我只想要当前在屏幕上的那些.
我有一个带有JPanel的ScrollPane,我在其中添加了大约200个组件JPanel.知道我希望Vertical-Slider移动到特定的Component.但问题是,当我打电话时:
myButton.scrollRectToVisible(myButton.getBounds());
Run Code Online (Sandbox Code Playgroud)
getBounds() 给我宽度和高度0.
显然,元素仍然没有被绘制.我怎么能等到repaint()方法完成它的所有工作,这样我才能做到scrollRectToVisible()?
编辑:
如果我给出了我的代码的简短示例,它可能会有所帮助:
addElementsToPanel(); //function where I add Elements to the Panel
myJPanel.revalidate();
myJPanel.repaint();
myButton.scrollRectToVisible(myButton.getBounds());
Run Code Online (Sandbox Code Playgroud) 我有一个Jpanel,我添加了许多组件(比方说100 JButtons).当我现在请求添加的组件的高度时,全部为0.这里来代码:
void AddComponents(){
//add 100 Buttons to my jpanel
for (Component component : jpanel.getComponents()) {
Rectangle test = component.getBounds();
DebugTextArea.append("\nx: " + test.x + "- y:" + test.y +
"- height: " + test.height + "- width: " + test.width);
}
}
Run Code Online (Sandbox Code Playgroud)
所有的值都是0.我知道这与组件的绘制需要一些时间有关,但是如何获得高度因为我将需要组件的高度来将VerticalScrollBar设置为某个点.
任何的想法?