Swing .form文件格式设计背后的逻辑是什么?

Swing .form文件格式设计背后的逻辑是什么?,swing,Swing,IntelliJ IDEA使用.form文件格式描述Swing表单 让我们以MyForm.form文件为例(我跳过不相关的内容) 我的问题很简单:为什么不使用属性“text”而不是标记“text” 那么,即使具体的组件子类不支持文本,XML方言/语法也必须为每个组件允许文本属性。从逻辑上讲,它取决于类属性的值。事实上,component标记必须允许从component继承的每个可能类的每个可能属性-不可能,因为它是打开的 对于单个值,属性表单可能看起来更容易,但一旦设置了多个属性值,将其写入

IntelliJ IDEA使用.form文件格式描述Swing表单

让我们以MyForm.form文件为例(我跳过不相关的内容)


我的问题很简单:为什么不使用属性“text”而不是标记“text”


那么,即使具体的
组件
子类不支持
文本
,XML方言/语法也必须为每个
组件
允许
文本
属性。从逻辑上讲,它取决于
属性的值。事实上,
component
标记必须允许从
component
继承的每个可能类的每个可能属性-不可能,因为它是打开的

对于单个值,属性表单可能看起来更容易,但一旦设置了多个属性值,将其写入列表更容易阅读。但是我认为这个文件不是手工编辑的


如果它不是纯XML方言,则可以混合使用(未声明的)属性和列表声明。事实上,
文本
标签本身就有气味。

可能有几个原因:

  • 使用属性时,他们必须区分“属性”属性(如“文本”)和非属性属性(如“id”、“类”),必须区别对待

  • 使用嵌套结构还允许设置嵌套属性,如
    List
    Map
    属性

  • 由于预先不知道允许的属性,因此在使用属性时很难定义XML验证模式或DTD。使用标记可以验证整个结构,并且只在
    属性
    部分中输入通配符


1。将所有属性视为属性属性;2.没有确定的列表或映射值;3.为什么要验证.form文件?只需在运行时抛出异常即可。这有意义吗?对不起,我的英语:)4。若标签有“未知”属性,只需跳过it@KolesnikovichDmitry:1)不可能-如果某个自定义组件具有
id
属性,那么您将如何设置它?你就是不能不干扰表格id。真的吗?您可以查看
JList
和更多内容。更不用说定制组件了。3) 因为任何人都可以用记事本来写它,并且可以选择使用著名的标准工具来验证它,这比没有这个选项要好。4) 这将是一种非常粗糙的处理错误的方法。@a.H.1)不允许自定义标记使用
id
property 2)我的意思是不同的,我们可以完全避免
properties
tag 3)只有1%的开发人员希望在记事本中编写.form文件4)粗糙但简单,好的,我们可以在运行时提供有关“未知”属性的信息。事实证明,使用属性、禁止某些名称(“保留字”,在本例中甚至不可能)以及无法正式检查文件结构更糟糕。
<component id="d32e0" class="javax.swing.JCheckBox">
    <properties>
        <text value="CheckBox"/>
    </properties>
</component>    
<component id="d32e0" class="javax.swing.JCheckBox" text="CheckBox">        
</component>