我有一个JPanel
类,其方法paintComponent()
被覆盖以绘制自定义图表。
如果我绘制的图形大于面板,是否会拉伸面板的尺寸?
如果答案是否定的,我怎么能这样做?
答案 0 :(得分:2)
如果我绘制的图形大于面板,是否会拉伸面板的尺寸?
不,它不会伸展。
..我怎么能这样做?
最简单的方法:不是将绘制图形的逻辑放入绘制方法,而是将该逻辑放入绘制正确大小的图像,然后在JLabel
中显示图像。
答案 1 :(得分:0)
绘画直接不会影响组件的大小,您可以非常轻松地绘制超出组件可见边界的颜色。
通常,组件的大小由getPreferredSize
,getMinimumSize
和getMaximumSize
的组合决定,布局管理器用于管理组件所在的容器。
如果您想影响面板的大小,您应该更改(在大多数情况下)getPreferredSize
和invalidate
容器层次结构的返回结果。
您希望通过覆盖getPreferredSize
方法直接执行此操作,而不是依赖setPreferredSize
,因为这会阻止其他人更改它。
有关详细信息,请参阅Should I avoid the use of set(Preferred|Maximum|Minimum)Size methods in Java Swing?