2016-06-09 11 views
1

문자열을 사용하여 문자열을 단추 이름으로 변환 한 다음 이름을 사용하여 레이블을 설정하여 스윙 단추 레이블을 정의하려고합니다.문자열별로 스윙 버튼 이름을 어떻게 얻습니까?

어떻게 든 작동하지 않으며 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

왜 이런 식으로하고 싶습니까? 무엇을 성취하려고합니까? 좀 더 설명해 주시겠습니까? – hamena314

+0

버튼 몇 가지를 자동으로 변경하는 클래스를 만들고 싶었습니다. 클래스를 호출 할 때 정의해야하는 유일한 것은 버튼 자체의 이름이며, 문자열에 저장됩니다. 문자열을 변환하려고했습니다. 지정된 단추의 레이블을 변경하는 데 사용할 수있는 방식으로. – Lolslayer

답변

1

수행 할 수 없습니다.

Java 반영 및 "class for name"은 사용자가 그렇게 할 수 없도록합니다. "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() ... 

: 당신은 기능 같은 종류가 필요한 경우

, 당신은 당신의 자신의 "레지스트리"를 구현하기 위해 같은 뭔가를 당신이 초보자 때 특히, 당신은 단지 필요가 있다고 생각하지 않습니다 그것을 사용할 수 있기 위해서 "개념"의 이름을 들어야합니다. 대신, 당신은 항상 상황이 더 복잡 할 수 있다고 가정해야하며, 그것이 정말로 필요한 것인지 이해하기 위해 들었던 개념에 대한 문서를 읽으려면 상당한 시간을 할애해야합니다. 그렇다면 그것을 사용하는 방법.

+0

주석 주셔서 감사합니다.하지만 내게 강의하지 않아도 되겠지만, 오래 걸리지는 않겠지 만 시간을 보냈습니다. 방법을 찾으십시오, 여러 번 일하도록 노력한 후에 이것을 시도하는 방법을 찾았어요. 그냥 작동시키지 못했고, 뭔가 효과가 없을 때마다 여기에오고 있다고 생각하지 않아요. 나는 정말로 붙어있을 때만 이것을한다. – Lolslayer

+0

무례하길 원하지 않았다. 그러나 이것은 내가 여기서 만든 매우 경험입니다 : "이름"(예 : "forName()")이 당신에게 무엇을 할 것인지 알려주지 않아야합니다. – GhostCat