MiGLayout 强制不良实践,或者我误解了它的使用



由于有几十种不同的布局管理器,我决定在我自己的项目中用MiGLayout替换它。原因是在整个项目中使用一个布局管理器:所有组件的布局规则都是一样的,管理器的灵活性是巨大的,所以这个想法似乎很有吸引力,我很高兴扔掉所有过于复杂的内置Java布局管理器。

正如在文档中编写的那样,MiGLayout 在布置 GUI 时将字符串作为参数。此外,一个字符串(一个参数)可以包含多个布局管理器指令。当然,可以使用链接方法,但是,据我了解,这种方式不是MiGLayout的"默认"方式,因此MiGLayout文档不推荐它。在使用 MigLayout 时,我有时会错误地将不正确的指令放在一个字符串中,这在编译时不会导致错误(方法需要字符串,字符串传递给它 - 编译器认为,没关系)。运行时出现错误 - 我的程序因 java.lang.IllegalArgumentException 而失败(原因是 MiGLayout 类中的"非法约束"),我没有好主意,如何优雅地处理它,而且我不确定,这种级别的异常是我头疼的)。无论如何,即使我会找到一种优雅的方式来添加代码布局管理器的异常处理,使用"multiarg"字符串作为参数的概念似乎是一种不好的做法,因为它会在代码中引发错误(并且这个错误,将来是运行时错误,IDE不会突出显示)。通常,将潜在错误从编译时带到运行时不是一种好的做法。然而,MiGLayout 是一个广泛使用的布局管理器,在官方的 Oracle 使用布局管理器教程中提到,我认为,如果它在 GUI 开发时强制不良实践,它就不会那么受欢迎。因此,我觉得自己误解了MiGLayout使用概念,我将不胜感激有经验的MiGLayout用户的一些解释。

如果它允许您以其他方式应用设置,它并没有真正强迫您采取不良做法。它为您提供了一种类型安全的方式和非类型安全的方式。

在布局设置存储在

外部的情况下,非类型安全方式是必不可少的,例如在允许您在程序内更改布局并保存设置以供下次使用的程序中。

您是否应该在不需要存储布局的程序中使用其中一个是基于意见的,尽管Java是一种类型安全的语言。

相关内容

最新更新