Swing .form文件格式设计背后的逻辑是什么?
IntelliJ IDEA使用.form文件格式描述Swing表单 让我们以MyForm.form文件为例(我跳过不相关的内容)Swing .form文件格式设计背后的逻辑是什么?,swing,Swing,IntelliJ IDEA使用.form文件格式描述Swing表单 让我们以MyForm.form文件为例(我跳过不相关的内容) 我的问题很简单:为什么不使用属性“text”而不是标记“text” 那么,即使具体的组件子类不支持文本,XML方言/语法也必须为每个组件允许文本属性。从逻辑上讲,它取决于类属性的值。事实上,component标记必须允许从component继承的每个可能类的每个可能属性-不可能,因为它是打开的 对于单个值,属性表单可能看起来更容易,但一旦设置了多个属性值,将其写入
我的问题很简单:为什么不使用属性“text”而不是标记“text”
那么,即使具体的
组件
子类不支持文本
,XML方言/语法也必须为每个组件
允许文本
属性。从逻辑上讲,它取决于类
属性的值。事实上,component
标记必须允许从component
继承的每个可能类的每个可能属性-不可能,因为它是打开的
对于单个值,属性表单可能看起来更容易,但一旦设置了多个属性值,将其写入列表更容易阅读。但是我认为这个文件不是手工编辑的
如果它不是纯XML方言,则可以混合使用(未声明的)属性和列表声明。事实上,
文本
标签本身就有气味。可能有几个原因:
- 使用属性时,他们必须区分“属性”属性(如“文本”)和非属性属性(如“id”、“类”),必须区别对待
- 使用嵌套结构还允许设置嵌套属性,如
或List
属性Map
- 由于预先不知道允许的属性,因此在使用属性时很难定义XML验证模式或DTD。使用标记可以验证整个结构,并且只在
部分中输入通配符属性
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>