编辑——@Uri 正确指出这是对注解的滥用;试图在注释中实际创建菜单数据本身是愚蠢的。
但是它们很适合绑定,我想我会坚持使用它们将文本数据链接到方法(@Menu ("File") 部分),因为它比反映到方法名称更明确和灵活。我也学到了很多东西。几天后我会在这里发布代码作为答案。
——原帖——
我没有使用这些新奇的注释,但它们看起来非常有趣。我在弄清楚语法时遇到了麻烦(或者更恰当地说,是使用它的最佳方式)。
在编写一些代码来回答这个问题时我突然想到我的方法已经过时了。
我曾经解析一个字符串来定义我的方法结构,然后使用反射将其传递给类,但我认为注释可以使菜单结构更好。
我想用以下内容替换文件中的测试类:
@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,而无需进一步输入。
第一个问题是我不知道如何传递字符串的“默认”,他们都想要(attribute =“value”)而不是(“value”),这可以做到吗?我可以没有它,但它有点冗长。如果我能去掉括号和/或引号会更好,但我不会屏住呼吸(我认为这样做我必须为每个菜单项定义一个单独的界面,这是不可接受的)。
其次,它不喜欢单个类上的多个 @Menu 标签。我可以通过解析一个字符串来解决这个问题,但我想知道是否还有其他方法。
最重要的是,是否有一个图书馆已经这样做了?(如果没有人想出一个,我会在它工作时将代码发布到这个线程,以防其他人感兴趣。)