2016-07-06 2 views
-1

TextField -s에 액세스 할 때 약간의 문제가 있습니다.Java에서 텍스트 필드에 동적으로 액세스하는 방법은 무엇입니까?

우리는 이제 우리는이 분야에서 텍스트를 얻을 수 및 배열에 저장하려면 81 (예 81) 텍스트 필드

private TextField textField1 = new TextField(); 

private TextField textField2 = new TextField(); 

private TextField textField3 = new TextField(); 

... 

의 목록을 가지고있다.

for loop 
    data[i] = textField???.getText(); 

어떻게 우리는 이제 필드 이름으로 변경 수 i을 포함합니까?

도움이나 아이디어를 주시면 감사하겠습니다.

답변

2

가장 쉬운 방법은 TextField 개체를 모두 ArrayList에 추가 한 다음 각 필드의 getText()이라는 목록을 반복하는 것입니다.

0

당신은 텍스트 필드의 배열을 만들 수 있습니다, 그래서 당신은 할 것이다 :

private Textfield[] array_textField = new Textfield[](); 

private TextField textField1 = new TextField(); 
array_textField[1] = textField1; 

private TextField textField2 = new TextField(); 
array_textField[2] = textField2; 

private TextField textField3 = new TextField(); 
array_textField[3] = textField3; 
... 
for loop 
data[i] = array_textField[i].getText(); 

을하지만 당신은 더 이상 데이터 배열을 필요가 없습니다. 당신은 당신과 같이 자바 리플렉션 API를 사용할 필요가 다른 답변에 의해 제안 된이 코드를 변경할 수없는 경우

0

:

import java.lang.reflect.Field; 
import java.lang.Class; 
int i = 0; 
Class aClass = MyObject.class 
Field field = aClass.getField("someField"+i); 
field.getText(); 
0

하나의 옵션은 각 하위 구성 요소를 반복하는 것입니다, 그것은 TextField의 경우 참조 그렇다면 데이터 배열에 값을 추가하십시오. 뷰 계층 구조가 어떻게 구성되어 있느냐에 따라 작동하지 않을 수도 있습니다.

for(Component component : container.getComponents()){ 
     if(component instanceof TextField){ 
      // Do whatever you need 
     } 
    } 
: 여기

이 작업을 수행하는 방법에 대한 기본적인 생각
관련 문제