为了账号安全,请及时绑定邮箱和手机立即绑定

为什么不同意在Swing中使用空布局?

为什么不同意在Swing中使用空布局?

为什么不同意在Swing中使用空布局?最近,我开始为我工作的公司创建一个项目。作为背景信息,我仍然是一个学生和一个初学者程序员,所以我的解决方案可能不推荐,我不知道如何做否则,但它的工作,但我不会因此而受到评判,因为这是一个学生的工作,与编程完全无关。这个程序的特点是,它将在多台不同屏幕大小和分辨率(800x600及以上)的计算机上运行。为了确保它在不丢失程序任何部分的情况下占用尽可能多的屏幕,我使用相对值将布局设置为NULL,并对所有内容进行硬编码。这个程序是Kiosk风格的,我首先得到屏幕大小值,然后从那里开始(例如,在我的头顶上,左边的菜单占屏幕的八分之一,最上面的栏占2%,等等)。我还使用字体度量来确保组件的大小是正确的,并且所有的内容都能很好地显示出来。我的问题是:为什么不使用布局管理器而使布局为空?(我在一些论坛上被告知,这是一种可怕的做事方式)我知道布局管理器是如何工作的,也知道如何使用不同的布局,但对于这个程序的要求(多个不同的分辨率、自定义的按钮形状和位置、更改语言时组件上的文本变化等等),我无法看到自己使用布局管理器来完成这一切。在这种情况下,更有经验的程序员如何使用布局管理器?当您希望一个按钮位于特定的某个位置,而其他特定的组件与任何预定义的布局不匹配时,您会做什么呢?
查看完整描述

4 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

如果您对布局管理器进行了正确的分层,屏幕将重新流到不同的大小,其想法是在所有屏幕大小上使用一组布局管理器。

如果使用NULL,则必须自己处理每个屏幕大小。不仅如此,如果该应用程序可以窗口,您必须支持每个可能的大小,他们可能滚动到。

这样做有点困难,但版面管理员就是为了做到这一点而设计的。

有一些常见的伎俩。BorderLayout是一个很好的布局开始。有时,您可能会在多个级别使用它-通常只有2或3个组件在其中。这是因为它非常擅长给所有的区域,只有一个区域,最低要求的面积,并把所有其他的东西给中心。

FlowLayout可能很有用,但是如果您的组件大小不同,这是很棘手的。

我不会尝试GridBagLayout,除非您计划编写代码来满足您的布局管理器(这是一个很好的解决方案!)

我也不会使用GUI构建器,他们不知道您希望重新布局的总体方式。


查看完整回答
反对 回复 2019-05-30
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

简而言之:因为上面解释的所有工作都是由布局管理器完成的(或者至少:应该完成)。

通常情况下,当使用空布局时,它还意味着所有的位置和大小都被硬编码成一个值,因此根本没有灵活性。这意味着对窗口大小、语言、字体大小、显示密度或任何其他相关参数的更改对布局没有任何影响,而且您会得到通常丑陋的效果:窗口的空部分;小的、不可调整大小的列表;标签被切断的按钮;.

听起来你所做的工作确实应该由布局管理器来完成。

查看完整回答
反对 回复 2019-05-30
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

你实际上是在使用一种布局-你自己的,所有复杂的位置计算。

您可以将这些逻辑移动到自定义布局管理器类,以安抚批评者。


查看完整回答
反对 回复 2019-05-30
?
largeQ

TA贡献2039条经验 获得超7个赞

嗯,诀窍应该是混在一起。LayoutMangers并使用嵌套数JPanels是否有不同的布局,实际上取决于JComponents,这使您可以通过以下方式创建如下所示的GUI:绝对Layout但是对于每个屏幕分辨率和比率(4:3、16:9、16:10),GUI的外观/输出是相同的。

查看完整回答
反对 回复 2019-05-30
  • 4 回答
  • 0 关注
  • 857 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信