你如何通过字符串获取摇摆按钮名称?

How do you get a swing button name by string?

我正在尝试通过使用字符串定义 Swing 按钮标签,然后将字符串转换为按钮名称,然后使用该名称设置标签。

不知何故它不起作用,我试过使用 getClass();和 Class.forName();

这是我的习惯 class,我尝试通过将按钮名称作为字符串输入来更改按钮标签;

public void zet(String scl){
Class c = scl.getClass();
//Class c = Class.forName(scl);
if (beurt) {
  c.setLabel("X");
  beurt = false;
} // end of if
else{
  c.setLabel("O");
  beurt = true;
}}

有人可以帮我解决这个问题吗?非常感谢。

你不能这样做。

Java 反射和 "class for name" 不允许你这样做。周围没有任何组件可以跟踪您之前创建的那些 JButtons "via new()" 并允许您仅通过其 "name".

找到一个

如果您需要此类功能,您必须实现自己的 "registry",例如:

Map<String, JComponent> componentsByName = new HashMap<>();
... then you add components like
componentsByName.put("button-1", someJButton); ...
... and later on, 
( componentsByName.get("button-1") ).setLabel() ...

换句话说:尤其是当你是新手时,不要假设你只需要听到 "concept" 的名字就可以使用它。相反,您应该始终假设事情可能会更复杂,并且您应该花一些认真的时间阅读有关您听说过的概念的文档,以了解它是否真的是您需要的;如果是,如何使用它。