如何获得以另一个JPanel为中心的JPanel的界限?

时间:2017-07-01 13:39:39

标签: java swing jpanel

我有一个主面板,边框布局包含中间的另一个面板。 因为我想在居中的面板内画画,我必须得到它的界限。

panel_main.add(panel, BorderLayout.CENTER);

我想将边界保存在这样的矩形中:

Rectangle bounding = new Rectangle 
   (panel.getX(), panel.getY(), panel.getWidth(), panel.getHeight());

但是每个参数似乎都是0.那么如何获得面板的界限呢? 我可以获得BorderLayout的界限吗?

1 个答案:

答案 0 :(得分:1)

  

但每个论点似乎都是0.

创建时,所有Swing组件的大小均为(0,0)。当框架被打包并且可见时,组件仅被赋予尺寸。

  

因为我想在居中的面板内画画,我必须得到它的界限。

您覆盖面板的paintComponent()方法。然后,您可以使用getSize()方法来控制绘画的位置。

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

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