你如何通过字符串获得一个秋千按钮名称?

时间:2016-06-09 07:18:34

标签: java japplet

我正在尝试使用字符串定义一个swing按钮标签,然后将字符串转换为按钮名称,然后使用名称来设置标签。

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

这是我的自定义类,我尝试通过将按钮名称作为字符串来更改按钮标签;

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;
}}

有人可以帮帮我吗?非常感谢提前。

1 个答案:

答案 0 :(得分:1)

你不能这样做。

Java反射和“类名称”不允许您这样做。没有任何组件跟踪你之前“通过new()”创建的那些JButton,并允许你只通过它的“名称”找到一个。

如果您需要这种功能,则必须实现自己的“注册表”,例如:

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

换句话说:特别是当你是新手时,不要以为你只需要听到“概念”的名称就可以使用它。相反,你应该总是假设事情可能更复杂,你应该花一些时间来阅读有关你听到的概念的文档,了解它是否真的是你需要的;如果是的话,如何使用它。