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