覆盖getPreferredSize和PaintComponent方法,为什么?

时间:2016-01-28 03:34:08

标签: java swing graphics2d

刚开始学习java并且正在玩Jframes,Jpanels和Graphics,并且想知道为什么我们必须覆盖getPreferredSize和PaintComponent方法才能使图形对象出现在已添加到Jframe的Jpanel中?

1 个答案:

答案 0 :(得分:3)

你不需要"需要"到,但肯定会有所帮助。

基本组件(如JPanelJComponent)的preferredSize 0x0,当与某些布局管理器一起使用时,会使组件几乎不可见(在事实上,绘画子系统甚至不会绘制一个大小为0x0)的组件。

在日常使用中,他们通过应用于他们的布局管理器计算他们的preferredSize,它使用子组件来计算结果。

因此,在没有子组件的情况下,您需要提供适当的大小提示,因此当您使用类似JFrame#pack之类的内容时,您最终不会得到“#34”扁平包装&#34 ;窗口或坐了几个小时,想知道为什么你真棒组件不会出现