0

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

我们以MyForm.form文件为例(无关内容我略过)

<component id="d32e0" class="javax.swing.JCheckBox">
    <properties>
        <text value="CheckBox"/>
    </properties>
</component>    

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

<component id="d32e0" class="javax.swing.JCheckBox" text="CheckBox">        
</component>    
4

2 回答 2

1

可能有几个原因:

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

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

  • 因为事先不知道允许的属性,所以在使用属性时很难定义 XML 验证模式或 DTD。使用标签可以验证整体结构,并且只在部分中放入通配符properties

于 2013-07-16T18:17:34.950 回答
0

然后 XML 方言/语法必须允许每个text属性,component即使具体Component子类不支持text. 从逻辑上讲,它将取决于class属性的值。事实上,component标签必须允许继承自的每个可能类的每个可能属性Component- 不可能,因为它是开放的。

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

如果它不是纯 XML 方言,那么(未声明的)属性和列表声明的混合是可能的。事实上,text标签本身就有味道。

于 2013-07-16T18:16:46.557 回答