为什么在Swing中不赞成使用空布局?



最近,我开始为我工作的公司创建一个程序。就像背景信息一样,我仍然是一个学生和一个初学者程序员,所以我的解决方案可能不被推荐,我不知道如何做,但它有效,我不会因为它而被评判,因为这是一个学生的工作,与编程完全无关。

这个程序的问题是,它将在不同屏幕尺寸和分辨率(800x600及以上)的多台不同的计算机上运行。为了确保它占用尽可能多的屏幕而不丢失程序的任何部分,我将布局设置为null,并使用相对值硬编码所有内容。

程序是kiosk风格的,我首先获得屏幕大小值,然后从那里开始(例如,在我的头顶上,左侧菜单占据屏幕的八分之一,顶部栏占2%,等等)。我还使用字体度量来确保组件的大小正确,并且所有内容都能很好地显示。

我的问题是:为什么让布局为空而不是使用布局管理器?(我在一些论坛上被告知这是一种可怕的做事方式)我知道布局管理器是如何工作的,知道如何使用不同的布局,但是对于这个程序的要求(多种不同的分辨率,自定义按钮形状和位置,当你改变语言时组件上的文本变化等),我不能看到自己使用布局管理器来完成这一切。

你们这些经验丰富的程序员在这种情况下如何使用布局管理器?当你想让一个按钮在某个特定的地方而其他组件在某个特定的地方而不匹配任何预定义布局时你该怎么做?

如果你正确地分层布局管理器,屏幕将为你重新流动到不同的尺寸,这个想法是在所有屏幕尺寸上使用一组布局管理器。

如果你使用null,你将不得不自己做每个屏幕尺寸。不仅如此,如果应用程序可以打开窗口,你必须支持所有可能的滚动大小。

这有点困难,但是布局管理器就是为这个设计的。

有一些常见的技巧。BorderLayout是一个很好的布局。有时您可能会在多个级别上使用它——通常只有2或3个组件。这是因为它真的很擅长给所有的区域,除了一个最小需要的区域,把其他的都交给CENTER。

FlowLayout可以很有用,但如果你的组件大小不同,它就很棘手了。

我不会尝试GridBagLayout,除非你打算编写代码来提供你的布局管理器(一个很好的解决方案!)。

我也不会使用GUI构建器,他们不知道你想要回流布局的总体方式。

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

通常情况下,当使用null布局时,它还意味着所有位置和大小都硬编码为单个值,因此根本没有灵活性。这意味着窗口大小、语言、字体大小、显示密度或任何其他相关参数的变化对布局没有影响,你会得到通常的丑陋效果:窗口的空部分;微小的、不可调整大小的列表;标签被剪掉的钮扣;…

听起来你所做的工作应该由布局管理器来完成。要么找一个这样做的(我个人的建议是MiGLayout,它做了很多,很容易使用)写你自己的

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

您可以将这些逻辑移动到自定义布局管理器类中以平息批评

hmmm技巧应该是通过混合layoutmanagers和使用嵌套的jpanel的数量,每个可以有不同的布局或不,真正取决于JComponents的数量,这允许你创建GUI看起来像通过使用AbsoluteLayout分层,但具有相同的外观/输出到GUI的每个屏幕分辨率和比例(4:3,16:9,16:10)

相关内容

  • 没有找到相关文章

最新更新