与几十个不同的布局管理器一起生病,我决定在我自己的项目中用MiGLayout替换它。原因是在整个项目中使用了一个布局管理器:布局的规则对于所有组件都是相同的,管理器的灵活性是巨大的,所以这个想法看起来很有吸引力,我很高兴抛弃所有过于复杂的内置Java布局管理器。
正如它在文档中所写,MiGLayout在布局GUI时将字符串作为args。此外,一个字符串(一个arg)可以包含多个布局管理器指令。当然,可以使用链接方法,但是,据我所知,这种方式对于MiGLayout来说不是“默认”,因此MiGLayout docs不建议这样做。在使用MigLayout时,我错误地在一个字符串中错误地输入了错误的指令,这在编译时没有引起错误(方法需要字符串,字符串传递给它 - 编译器认为,没关系)。错误出现在运行时 - 我的程序失败了 java.lang.IllegalArgumentException (原因是MiGLayout类中的'非法约束'),我没有好主意,我怎么能优雅地处理它,而且我是不确定,这个级别的异常是我的头疼)。无论如何,即使我会找到一种优雅的方式来添加我的代码布局管理器的异常处理,使用'multiarg'字符串作为args的概念似乎是不好的做法,因为它会引发代码中的错误(这个错误,运行时 - 将来的错误,不会被IDE高举)。通常,从编译时到运行时携带潜在错误不是一个好习惯。但是,MiGLayout是一个广泛使用的布局管理器,在官方的Oracle Using Layout Managers 教程中提到,我认为,如果它在GUI开发时强制执行不好的话,它就不会那么受欢迎了。因此,我觉得自己误解了使用概念的MiGLayout,我将非常感谢有经验的MiGLayout用户的一些解释。
答案 0 :(得分:0)
如果它允许您以其他方式应用设置,则它并非真正强制您进入不良做法。它为您提供了一种类型安全的方式和一种非类型安全的方式。
在布局设置存储在外部的情况下,非类型安全方式是必不可少的,例如在允许您在程序中更改布局并保存下次设置的程序中。
你是否应该在不需要存储布局的程序中使用其中一个是基于意见的,尽管Java 是一种类型安全的语言。