MiGLayout 强迫不良做法,还是我误解了它的用途?

MiGLayout forces bad practice, or I misunderstand its use?

厌倦了数十种不同的布局管理器,我决定在我自己的项目中用 MiGLayout 替换它。原因是在整个项目中使用一个布局管理器:所有组件的布局规则都是相同的,管理器的灵活性很大,所以这个想法看起来很有吸引力,我很乐意扔掉所有过于复杂的内置Java 布局管理器。

正如文档中所写,MiGLayout 在布局 GUI 时将字符串作为参数。此外,一个字符串(一个参数)可以包含多个布局管理器指令。当然,可以使用链接方法,但据我了解,这种方式不适用于 MiGLayout 'default',因此 MiGLayout 文档不推荐这种方式。在使用 MigLayout 时,我有时会错误地将不正确的指令放入一个字符串中,这不会导致编译时出错(方法需要字符串,并且将字符串传递给它 - 编译器认为,没问题)。运行时出现错误 - 我的程序失败 java.lang.IllegalArgumentException(原因是 MiGLayout 类 中的 'Illegal Constraint'),我没有好的想法,我如何可以优雅地处理它,而且我不确定,这种级别的异常是我头疼的)。无论如何,即使我会找到一种优雅的方式来添加我的代码布局管理器的异常处理,使用 'multiarg' 字符串作为 args 的概念似乎是不好的做法,因为它会在代码中引发错误(而这个错误,是将来的运行时错误,不会被 IDE 突出显示)。一般来说,将潜在的错误从编译时携带到运行时并不是一个好习惯。然而,MiGLayout 是一个广泛使用的布局管理器,在官方 Oracle Using Layout Managers 教程中提到,我认为,如果它在 GUI 时强迫不良实践,它不会那么流行发展。因此,我觉得自己对 MiGLayout 使用概念有误解,我将感谢有经验的 MiGLayout 用户的一些解释。

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

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

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