2016-06-13 2 views
0

JtextField 배열의 ArrayList를 만들었지 만 JPanel에 배치하는 방법을 모르겠습니다.JPanel에 JTextField 배열의 ArrayList 넣기

어떻게 JTextField를 JPanel에두기 위해 double for for loop를 수정할 수 있습니까?

응답에 제공된 코드를 내 생성자에 넣었으며 오류없이 컴파일했습니다. 그러나 프로그램을 실행하면 추가 된 TextField가 GUI에 표시되지 않습니다. 왜 이런 일이 생길까요? 여기

ArrayList <JTextField []> text_field; //class variable 

constructor { 
    text_field = new ArrayList <JTextField []>(); 

    for (int i = 0; i < text_field.size(); i++) { 
    JTextField field [] = text_field.get (i); 

    for (int j = 0; j < field.length; j++) { 
     JTextField jtf = field [j]; 
     pan2.add (jtf); 
    } 
    } 
} 

답변

0

는이 작업을 수행하는 방법은 다음과 같습니다

ArrayList <JTextField []> text_field; 
text_field = new ArrayList <JTextField []>(); 

for (int i = 0; i < text_field.size(); i++) 
{ 
    JTextField [] arr = text_field.get(i); 
    for (int j = 0; j < arr.length; j++) 
    { 
     JTextField jtf = arr[j]; 
     // add the JTextField to the JPanel here 
     // JPanel.add(jtf) 
    } 
} 

또한이 같은 각 루프를 사용할 수 있습니다

for (JTextField [] arr : text_field) 
{ 
    for (JTextField jtf : arr) 
    { 
     // add the JTextField to the JPanel here 
     // JPanel.add(jtf) 
    } 
} 
0

흠 ... 0 모르고 - (8)이 가정된다 중첩 된 for 루프에서 표현하기 위해, 실제로하려고하는 것은 JTextField [] 배열을 반복하는 것입니다. 그래서 여기에 코드입니다 :

코드의 수정을주의하시기 바랍니다 (즉, 가장 좋은 방법은 물건 당신은 당신의 TextField 객체 인스턴스화 3 두 개의 선이 필요하지 않습니다 2. 1. 낙타 표기법 대신 밑줄있다. 당신은 당신은

List<JTextField[]> textField = new ArrayList<>(); 
for (int i = 0; i < textField.size(); i++) { 
    JTextField[] jtfArray = textField.get(i); 
    for (int j = 0; j < jtfArray.length; j++) { 
     add(jtfArray[i]);//add to the JPanel 
    } 
} 
(자바 7 이후) 오른쪽에있는 다이아몬드 연산자 <>을 사용할 수 있습니다 4. 객체의 왼쪽 임무에 목록으로 유형을 선언 할 수 있습니다