Java图形编程-Label内容显示不全的问题

本文探讨了一个关于GUI编程中的Label组件显示不全的问题,并通过源码分析揭示了其背后的原因。文章指出,在初始化时Label的大小默认为内容大小,导致内容较多时无法完全展示。通过调整窗体大小或手动设置Label的首选尺寸可以解决该问题。

之前遇到这么一个很有意思的问题,感觉有必要记录下来,方便以后学习,由于代码不是很复杂,我们就直接截图来分析说明

这里写图片描述

黄色部分是一个Label,点击确定按钮之后,Label显示上面4个输入框中的内容,可以看到Label并没有把全部的内容显示出来,

当我们调整窗体的大小之后,Label就显示正常了。
这里写图片描述

这是什么原因造成的呢?初步猜想,应该是初始化时系统的Label的大小设定,默认为Label内容大小,也就是说,Label里面内容多大,绘制的时候就多大,因为我们默认Label为空,所以系统初始化大小的时候为默认大小,也就是图1中看到的那样。而改变窗体大小之后,系统要重新计算各控件的大小来绘制窗体,这时候控件的大小就是根据控件里面的内容来设定了,也就是图2中看到的那样。

我们通过对源码来分析上面的猜想是否正确

这是 Label 的 setText()方法

这里写图片描述

继续走这个方法, 我们在 Component类中发现了这个方法

这里写图片描述

通过查阅 api,我们就找到了这3个方法

这里写图片描述

看到这3个方法,瞬间就豁然开朗了,也证明了之前猜想是基本正确的,也就是说,如果我们要指定 组件 的初始大小,需要设置的方法是

setPreferredSize(Dimension preferredSize) 这个方法,而不是我们自认为的 setSize()…

改正代码之后的效果,这个时候 Label 就达到我们想要的效果了

这里写图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值