【发布时间】:2018-12-22 08:52:06
【问题描述】:
需要明确的是,这里的几个看起来相似的条目实际上并没有讨论动态构建菜单,因为它们的所有对象名称选择等都已经在它们的代码中,因为它们已经在源代码中编写了固定字符串;他们所做的只是等到运行时创建他们静态设计的菜单项。以下是我发现的两个类似条目:One 和 Two. 那里的问题仅与刷新显示的琐碎(但至关重要)任务有关,与实际动态创建内容无关。
与此形成鲜明对比的是,我想做的是真正动态地添加:我希望用户能够选择将项目添加到子菜单中,然后他们可以在以后选择并在应用程序中采取行动。
让我们以简单地向菜单添加一个整数值,然后稍后可以选择它的情况为例,类似于使用组合框可以轻松完成但使用菜单完成的操作。
问题不在于与定义有关的语法,例如,MenuListener 将指向一个知道如何操作的方法,这不是问题。相反,我只是不太了解动态命名空间,以及如何“取消引用”字符串,例如,作为对象名称。坦率地说,我如何动态命名我没有预料到创建的新对象(不是实物,而是数量)? IOW,我如何获取一个实际上包含我想要运行的代码的巧妙构造的字符串,然后让 Java 运行它? Java 语法是什么?也许问题可以简化为对象名称;比如说,名称是我可以构造的字符串;如何在我的JMenuItem 声明中使用它? ...我知道如何在 BASH 中执行此操作,但是如何在 Java 中执行此操作?
(我希望我不必将它创建为文件,编译它,然后以某种方式将类文件附加到我正在运行的程序中,然后运行它——该死,这太麻烦了!)
谢谢。
【问题讨论】:
-
我想看一个这样的伪例子。您已经知道“种类”但不知道数字,但这与接受包含 Java 的字符串有什么关系?代码?
-
动态创建菜单与创建静态菜单没有什么不同,只是属性变成了变量而不是硬编码。真正的问题是,鉴于大部分信息都是文本的,你将如何执行命令
-
“我如何获取一个巧妙构造的字符串,该字符串实际上包含我想要运行的代码,然后让 Java 运行它?Java 的语法是什么?” - 什么这个“巧妙构造的字符串”究竟长什么样子?是 JavaScript、Java 代码还是你自己的发明?
-
@MadProgrammer 您说“与创建静态菜单没有什么不同”。好的,那么如何指定我应用实例化等构造的名称?您能否给出“JMenuItem
= new JMenuItem();”的示例语法或“ .setFont(myFont);” ...作为一些简单的例子?如果是这样,请使用它来为我的问题创建答案! -
@RichardT 如果您不想维护单个变量引用,请使用
HashMap或List
标签: java swing dynamic jmenu jmenuitem