【发布时间】:2015-02-21 21:24:36
【问题描述】:
我有一个从 JFrame 扩展而来的类。 在它的构造函数中,我生成了一个 JPanel:
JPanel contentPane = new JPanel();
contentPane.setBackground(Color.BLACK);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JOptionPane.showMessageDialog(contentPane, contentPane.getBounds());
我认为使用 setContentPane,我会填满 JFrame 中的整个可用空间。所以它会自动设置 JPanel 的边界。
我需要获取 JPanel 的边界,但 getBounds() 返回 x = 0, y = 0, width = 0, height = 0。 JPanel 的其他与大小相关的方法(如 getWidth() 等)也返回 0。如果我显式地设置 JPanel 的 setBounds(),这些方法将返回我给定的值。
有趣的是,setBackground 填充了我的 JFrame 中的整个可用空间。因此,我的 JPanel 的大小必须与我的 JFrame 的大小完全相同。但似乎并非如此。
也许这个问题是由布局管理器引起的,就像大多数与容器相关的问题一样。但是使用布局管理器,我也得到 0。
我认为这是一个非常愚蠢的问题,可以轻松解决,但我无法弄清楚问题所在。 我没有在网上找到这个问题的答案,所以希望没有复制一些帖子。
【问题讨论】: