小编Leo*_*eon的帖子

在JScrollPane中获取显示的组件

我有一个包含JPanel的JScrollPane.我用许多按钮填充这个JPanel.

是否有可能获得当前显示的按钮?

我知道我可以访问JPanel的子节点,jpanel.getComponents()但这些都是此窗格中的组件; 我只想要当前在屏幕上的那些.

java swing jpanel scrollpane jscrollpane

5
推荐指数
2
解决办法
1623
查看次数

等到重新绘制组件完成

我有一个带有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)

java swing repaint

2
推荐指数
1
解决办法
1156
查看次数

绘画前的JComponent高度

我有一个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设置为某个点.

任何的想法?

java swing components paint jpanel

1
推荐指数
1
解决办法
108
查看次数

标签 统计

java ×3

swing ×3

jpanel ×2

components ×1

jscrollpane ×1

paint ×1

repaint ×1

scrollpane ×1