我一直在这里搜索了好几天,并且接近我希望存在的东西,尽管不完全正确。
我的GUI有一个TabbedPane部分,其中包含几个选项卡,而这些选项卡又有几个JSpinner。选项卡的结构相同,并且使用以下命名约定命名微调器[prefix] Spinner] [num](例如,Tab 1:redSpinner1,blueSpinner1 ..Tab 2:redSpinner2,blueSpinner2 ..等等)。我需要在每个选项卡上提取微调器的值,并希望通过串联前缀“Spinner”和增量值(即微调器所在的选项卡号)来“构建”变量名称来实现。我的目标是不必对变量名进行硬编码,但仍然能够访问变量方法,特别是getValue()。
在我的研究中,我遇到了两种可能的解决方案:
1)使用Map结构将变量名称映射到实际实例
2)Reflection API
第一种方法我可以使用我的变量名称连接方法作为键,但仍然需要手动映射实例变量名称。最终,这使我处于同样的位置。
完全披露,我不是反射API的专家,所以我可能无法理解它足以解决我的问题(因此我为什么在这里!)。我曾尝试/希望做以下事情(或接近它的事情):
Class myClass = GuiClass.class; //GuiClass == main gui class containing spinners
Field myField = myClass.getField(redSpinner1); //using the 'built variable name'
int myValue = (int) myField.getValue(); //I can't get this step to work.
非常感谢任何帮助。我开始认为我可能不得不改变那个部分结构的设计,并想看看SE上是否有人有更好的方法。提前谢谢。