FIM++ 使用Java类库
第 19 章
8 年前
1451下面所有的例子里, 位于{...} 里面的部分是可选的,而位于 (...|...) 里面的部分是可以相互代替的。
加载类库
I enchanted <标识符: 变量名> with <一列单词> .一列单词将会被编译器转换为标准的Java类名。这里加载的类库将会被保存到变量里以便于以后使用。
写法举例:
javax swing j frame => javax.swing.JFrame
java lang math => java.lang.Math
java util hash map => java.util.HashMap
org xml sax helpers xml filter impl => org.xml.sax.helpers.XMLFilterImpl
javax swing graphics two => javax.swing.Graphics2创建对象
I woke up <标识符: 变量名> with <标识符: 类> {and <一列自变量>}.读取字段
I (took|got|stole) <字段名> of <标识符: 类或对象> and {I} gave (it|them|her|him) to <标识符: 保存结果的目标变量> .字段名可以是字符串或标识符。未来的版本将会支持数字,所以你可以直接使用原生的Java array。
写入字段
I gave <表达式> to <字段名> of <标识符: 类或对象> .字段名可以是字符串或标识符。
注意:这个操作我没经过测试,可能用不了。
调用方法
{I told <标识符: 保存结果的变量>} I asked {<标识符: 类>} about <argument list> (so|if|what|when) {(it|she|he|they)} <标识符: 方法名>.相当于下面的Java代码:
result = class.method(arguments);
result = ((class)(arguments.head)).method(arguments.tail);{I told <标识符: 保存结果的变量>} I asked {<标识符: 类>} about <argument> made <标识符: 属性名>.相当于下面的Java代码:
result = class.setproperty(argument, true);
result = ((class)argument)).setproperty(true);{I told <标识符: 保存结果的变量>} I asked {<标识符: 类>} about <argument> with <arguments> of <属性名>.相当于下面的Java代码:
result = class.setproperty(argument, arguments);
result = ((class)argument)).setproperty(arguments);{I told <标识符: 保存结果的变量>} I asked {<标识符: 类>} (what|if|when) <argument> {with <arguments>} (is|are|was|were|has|have|had) property .相当于下面的Java代码:
result = class.getproperty(argument, arguments);
result = ((class)argument)).getproperty(arguments);
result = class.isproperty(argument, arguments);
result = ((class)argument)).isproperty(arguments);译者注
经过实际测试,上面的语法似乎有问题,我举两个例子,这两个例子都是编译通过的:
1.无参数调用方法
Dear Princess Celestia: Random Ponies.
Today I learned:
I enchanted Rainbow Dash with java util random.
I woke up Rainbow Dash with Rainbow Dash.
I told Pinkie Pie I asked about Rainbow Dash when she next int.
I said Pinkie Pie.
Your faithful student, Rarity.这里用java.util.Random来举例,其中第五行的语法为:
{I told <标识符: 保存结果的变量>} I asked about <标识符: 类> (so|if|what|when) {(it|she|he|they)} <标识符: 方法名>.2.有参数调用方法
Dear Princess Celestia: Random Ponies.
Today I learned:
I enchanted Rainbow Dash with java util random.
I woke up Rainbow Dash with Rainbow Dash.
I told Pinkie Pie I asked about Rainbow Dash and 11 when she next int.
I said Pinkie Pie.
Your faithful student, Rarity.其中第五行的语法为:
{I told <标识符: 保存结果的变量>} I asked about <标识符: 类> and <标识符: 传入参数> (so|if|what|when) {(it|she|he|they)} <标识符: 方法名>.能够通过编译的语法与作者展示的语法并不一致,我不知道为什么。可能是作者写错了,或者上面的写法是老版本的可是作者却没有更新文档。特此注明,仅供参考。
从方法到javax.swing.ActionListener的自动转化
你可以把FIM++方法作为事件监听器添加到Swing部件上。
这个方法将在事件发生时被调用,不需要传入参数。返回的结果将被丢弃。