【发布时间】:2009-01-26 23:20:56
【问题描述】:
Edit--@Uri 正确指出这是对注解的滥用;试图在注释中实际创建菜单数据本身是愚蠢的。
它们非常适合绑定,但我想我会坚持使用它们将文本数据链接到方法(@Menu ("File") 部分),因为它比反映到方法名称更明确和灵活.我也学到了很多东西。几天后我会在这里发布代码作为答案。
--原帖--
我没有使用这些新奇的注释,但它们看起来非常有趣。我在弄清楚语法时遇到了麻烦(或者更恰当地说,是使用它的最佳方式)。
在写一些代码来回应question 我突然想到我的方法已经过时了。
我曾经解析一个字符串来定义我的方法结构,然后使用反射将它传递给类,但我认为注释可以使菜单结构更好。
我想将文件中的测试类替换为如下内容:
@TopMenu("File,Edit")
@Menu(name="File","Save,Load,Print,Preview,Quit")
@Menu(name="Print","Preview,Print")
@Menu(name="Edit","Copy,Paste")
public class TestMenu {
@MenuItem ("Save")
public void save() {
System.out.println("saved");
}
@MenuItem ("Load")
public void load() {
System.out.println("loaded");
}
...
并将整个类传递给一个方法,该方法制造并返回一个绑定到类实例的 JMenuBar,而无需进一步输入。
第一个问题是我不知道如何传递字符串的“默认值”,他们都想要(属性=“值”)而不是(“值”),可以这样做吗?我可以没有它,但它有点冗长。如果我能去掉括号和/或引号会更好,但我不会屏住呼吸(我认为这样做我必须为每个菜单项定义一个单独的界面,这是不可接受的)。
其次,它不喜欢单个类上的多个@Menu 标签。我可以通过解析一个字符串来解决这个问题,但我想知道是否还有其他方法。
最重要的是,是否有一个库已经这样做了? (如果没有人想出一个,我会在它工作时将代码发布到这个线程,以防其他人感兴趣。)
【问题讨论】:
标签: java user-interface swing reflection annotations