为什么不使用setXXXSize()?

艾克斯

每当我查找与布局方案,我遇到谁建议不要使用的人setMinimumSize()setPreferredSize()setMaximumSize()方法。

典型的论点是,LayoutManager应该使用正确的代替。

我的理解是LayoutManager,通过查找组件需要多少空间以便正确调整尺寸,该组件可以计算组件的实际宽度/高度。因此,使用这3种方法对我来说似乎很合理-例如,当您希望某个组件仅具有一定的大小,而让另一个组件始终占用其余部分时。

那么为什么setXXXSize()不鼓励使用呢?

杰森c

链接重复项有很多好的答案(我应该避免在Java Swing中避免使用set(Preferred | Maximum | Minimum)Size方法吗?)。

加上以下原因:除了少数例外,如果您使用这些方法,则可能需要对GUI进行微调,以使其在特定的外观(以及系统特定的设置,例如您的首选桌面字体,等等。)。这些方法本身并不是天生的邪恶,但是使用它们的典型原因在其他平台上,一旦开始调整布局中的像素位置和大小,您就有冒着GUI断裂(或至少看起来很糟)的风险。

例如,尝试更改应用程序的默认外观。即使仅使用平台上可用的选项,您无疑也会对结果呈现的效果感到惊讶。

因此,以在所有平台上保持GUI正常运行和美观的名义(请记住,Java的主要优点之一就是它的跨平台性),您应该依靠布局管理器等来自动调整大小。您的组件,以便在特定的开发环境之外正确呈现。

综上所述,您当然可以设想这些方法合理的情况。同样,它们并不是天生的邪恶,只需确保您在使用它们时意识到并发的可能性很高,并始终尝试思考是否存在另一种与外观无关的解决方案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么不使用@messages?

来自分类Dev

为什么不使用UASP

来自分类Dev

为什么使用NSEnumerationReverse而不使用NSEnumerationForward

来自分类Dev

为什么堆栈使用数组,为什么不使用链表

来自分类Dev

为什么MongoDB不使用索引交集?

来自分类Dev

为什么不使用PictureBox控件?

来自分类Dev

为什么这里不使用LINQ ToList?

来自分类常见问题

为什么不使用S :: x?

来自分类Dev

为什么不使用Xcode编译测试?

来自分类Dev

为什么不使用@RequestParam而不是@ModelAttribute

来自分类Dev

为什么在解组期间不使用ObjectFactory?

来自分类Dev

为什么不使用golang WSGI实现

来自分类Dev

为什么Postgres不使用索引?

来自分类Dev

为什么MongoDB不使用索引交集?

来自分类Dev

为什么此查询不使用索引?

来自分类Dev

Drools为什么不使用Java 8?

来自分类Dev

为什么不使用Bootstrap 2.3.2?

来自分类Dev

为什么EntityFramework不使用我的谓词?

来自分类Dev

为什么不使用GOTO语句?

来自分类Dev

为什么我不使用100%?

来自分类Dev

HyperLogLog交集:为什么不使用min?

来自分类Dev

为什么SendMessageTimeout不使用DWORD?

来自分类Dev

为什么TextBlob不使用/检测否定?

来自分类Dev

为什么不使用查找优化?

来自分类Dev

为什么我的appendChild不使用createDocumentFragment?

来自分类Dev

为什么FutureTask不使用AQS内部了?

来自分类Dev

为什么不使用指针读取Struct?

来自分类Dev

为什么CFStream不使用TLS 1.3?

来自分类Dev

为什么不使用javascript声明变量?