我有一个主面板,边框布局包含中间的另一个面板。 因为我想在居中的面板内画画,我必须得到它的界限。
panel_main.add(panel, BorderLayout.CENTER);
我想将边界保存在这样的矩形中:
Rectangle bounding = new Rectangle
(panel.getX(), panel.getY(), panel.getWidth(), panel.getHeight());
但是每个参数似乎都是0.那么如何获得面板的界限呢? 我可以获得BorderLayout的界限吗?
答案 0 :(得分:1)
但每个论点似乎都是0.
创建时,所有Swing组件的大小均为(0,0)。当框架被打包并且可见时,组件仅被赋予尺寸。
因为我想在居中的面板内画画,我必须得到它的界限。
您覆盖面板的paintComponent()
方法。然后,您可以使用getSize()
方法来控制绘画的位置。
您还需要覆盖面板的getPreferredSize()
方法,以便布局管理器可以正确打包()框架。
阅读Custom Painting上Swing教程中的部分,了解更多信息和工作示例,以帮助您入门。