你好。
在这个网站上花费了无数小时寻找代码以在屏幕上拖动组件后,我注意到答案中出现了一种奇怪的趋势。
...因为每个人都对 null 布局的声音不寒而栗。
所以我问,每个人都有什么问题?我编写代码的时间不超过三个月,使用 Swing 的时间不超过一个,而且布局使用起来非常轻松,可以进行无休止的自定义。为什么这是不好的做法?
你好。
在这个网站上花费了无数小时寻找代码以在屏幕上拖动组件后,我注意到答案中出现了一种奇怪的趋势。
...因为每个人都对 null 布局的声音不寒而栗。
所以我问,每个人都有什么问题?我编写代码的时间不超过三个月,使用 Swing 的时间不超过一个,而且布局使用起来非常轻松,可以进行无休止的自定义。为什么这是不好的做法?
主要问题是在尝试确定各个平台有关字体和像素如何呈现等方面的复杂性
即使是运行相同操作系统的两个系统,由于硬件驱动程序和渲染管道不同,也会产生不同的输出。
许多 API 已经被抽象化,以至于您永远不必关心一台 PC 使用 DPI 为 120 并使用 DirectX,而另一台 PC 使用 DPI 为 92 并使用 OpenGL。
布局管理器免除了开发人员必须在特定时刻计算组件(及其子组件)大小以及计算这些组件之间的关系并以标准化方式进行的责任。
核心 Swing API 旨在利用此 API,因此当组件以某种方式发生变化时,会自动通知所有需要的容器,并且可以根据需要调整组件的整个层次结构。
布局管理器的基本思想是描述同一容器上的组件之间的关系,并提供有关该容器可能想要拥有多少的信息。这使您可以专注于 UI 的用户能力跟踪,而不是花时间尝试更新 UI 以满足所有各种可能的硬件和软件组合。
作为一名前 VB 开发人员(不,我不会为此感到自豪),我可以向你保证,使用它最令人沮丧的部分是尝试开发可用的、动态的 UI,而这些 UI 在下一台客户端机器上看起来并不糟糕。
在 Swing 的所有方面中,布局管理是最受欢迎的方面之一 - 恕我直言
因为它不是一个布局。您所做的只是使用 GUI 编辑器将组件放置在绝对位置。调整窗口大小或在不同的显示器分辨率下运行代码看起来很糟糕。
寻找代码以在屏幕上拖动组件
那是不同的要求。根据定义,当您在屏幕上拖动组件时,您无法对位置进行编程。
话虽如此,布局管理器所做的不仅仅是设置组件的位置。查看Drag Layout以获得在这种情况下仍然可以使用的布局。
对于其他情况,布局管理器(或嵌套布局管理器的组合)如果是设计有效 GUI 的更好解决方案。
你会因为使用它而失去 GUI 的一些要点,因为它很难维护,更多的代码,更不灵活,......添加一个额外的按钮将导致你必须做大量的重新计算。
我怎么看: http: //leepoint.net/notes-java/GUI/layouts/nulllayout.html