2016-07-04 3 views
0

나는이 같은 문자열 배열,변수 참조로 String 값을 가져올 수 있습니까? (변수 이름)

String[] components = {"jButton1,jLabel1,jTextField1"}; 

이 같은이 변수 문자열 이름을 사용하려면,

components[0].setText("Some Text"); 

내가 변수 이름으로 문자열 값을 사용할 수 있습니까? 이 모든 변수 선언은 내 코드에 있습니다.

+2

왜'jButton1.setText()'대신'components [0] .setText()'를 쓰겠습니까? – Kayaman

+2

리플렉션을 통해 가능합니다. 그러나 배열의 구성 요소에 대한 실제 참조를 저장하는 것이 가장 좋은 이유는 무엇입니까? –

+2

또는지도. 'map.put ('jButton1', jButton1)','map.get (buttonName) .setText ("Some text")'. – bezmax

답변

0

당신이 국제화가는 동안이 시도 할 수있는 변수 이름을 얻기 위해, 변수 이름을 변경할 필요는 없지만 :

Class<?> myClass = this.getClass(); 
Field field = myClass.getField("fieldName"); 

if(field instanceof JButton) 
    ((JButton)field).setText("My text"); 

이 튜토리얼을 살펴보십시오를, 도움이 될 수 http://omtlab.com/java-reflection-tutorial/

+0

Reflection에 동의하지 않습니다. 예를 들어 get/putClientProperty가 있습니다. – mKorbel

관련 문제