【问题标题】:MiGLayout forces bad practice, or I misunderstand its use?MiGLayout 强制执行不好的做法,还是我误解了它的用法?
【发布时间】:2016-08-23 03:22:19
【问题描述】:

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

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

【问题讨论】:

  • 如果您通过了任何合法约束作为miglayout约束,那么您希望如何优雅地处理它?因为不会显示 UI。所以,我觉得基本上你应该学习约束的语法来使用它。另外关于您必须传递多个参数的声明,我想说如果您传递了错误的参数,让我们说 " cell 1 0" 而不是 "cell 0 1" 组件将显示但会出现在错误的位置。

标签: java layout miglayout


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    相关资源
    最近更新 更多