我正在尝试使用字符串定义一个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;
}}
有人可以帮帮我吗?非常感谢提前。
答案 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() ...
换句话说:特别是当你是新手时,不要以为你只需要听到“概念”的名称就可以使用它。相反,你应该总是假设事情可能更复杂,你应该花一些时间来阅读有关你听到的概念的文档,了解它是否真的是你需要的;如果是的话,如何使用它。