Java 如何使一个JPanel的边界以另一个JPanel为中心?

Java 如何使一个JPanel的边界以另一个JPanel为中心?,java,swing,jpanel,Java,Swing,Jpanel,我有一个带有边框布局的主面板,中间还有一个面板。 因为我想在中间的面板上画画,所以我必须得到它的边界 panel_main.add(panel, BorderLayout.CENTER); 我想将边界保存在一个矩形中,如下所示: Rectangle bounding = new Rectangle (panel.getX(), panel.getY(), panel.getWidth(), panel.getHeight()); 但每个参数似乎都是0。那么我如何得到面板的边界呢? 我

我有一个带有边框布局的主面板,中间还有一个面板。 因为我想在中间的面板上画画,所以我必须得到它的边界

panel_main.add(panel, BorderLayout.CENTER);
我想将边界保存在一个矩形中,如下所示:

Rectangle bounding = new Rectangle 
   (panel.getX(), panel.getY(), panel.getWidth(), panel.getHeight());
但每个参数似乎都是0。那么我如何得到面板的边界呢? 我可以得到边界布局的边界吗

但每个参数似乎都是0

所有Swing组件在创建时的大小均为(0,0)。只有在包装框架并使其可见时,才会给组件指定尺寸

因为我想在中间的面板上画画,所以我必须得到它的边界

panel_main.add(panel, BorderLayout.CENTER);
覆盖面板的
paintComponent()
方法。然后,您可以使用
getSize()
方法来控制绘画的完成位置

您还需要覆盖面板的
getPreferredSize()
方法,以便布局管理器可以正确地打包()框架


阅读上Swing教程中的部分,了解更多信息和工作示例,帮助您入门。

我不确定您是否需要边界。如果这样做,在调用layout之后(在
pack()
之后)获取边界,但是在我将其添加到主面板之后(如上面的示例),它应该有一个正确的大小?