2016-08-21 9 views
0

내부에 거의 20 개의 패널이있는 프레임을 만들었습니다 (모두 종류와 특성이 다릅니다). 단순히 프레임을 만들고 내용 패널에 추가하고 액세스하는 순서 번호를 기억했습니다.패널이 프레임 안의 필드 여야합니까?

하지만 지금은 소스 코드에서 UML 다이어그램을 생성하려고하는데 프레임 안에이 패널에 대한 참조가 없다는 것을 알았습니다. 20 개의 필드 패널을 만들어 하나씩 참조해야합니까? 아니면 괜찮은거야? 나는 옳은 길을 모른다. 고마워!

P.S :이 문제하지만 내 언어가 언제든지 그들을 호출 할 수 있도록 당신은 JPanel의 [] 배열의 패널을 저장할 수있는 Java

답변

0

당신이 당신의 패널 나는이 패널은 또한 다른 클래스를 의심 (다른 종류와 특성와 모두)에 대해 쓸 방법.

그래서 코드는 이제

firstPanel.someMethod(); 

같이 결정하는 것입니다 반면 모든 패널

private MyPanelType1 firstPanel; 

에 대한 필드 코드가 아마

((MyPanelType1) getContentPane().getComponent(0)).someMethod(); 

과 같은 특정 패널에 액세스 할 수있는 코드는 읽기 쉽고 그에 따라 결정됩니다.

+0

네, 다른 애트리뷰트도 있습니다. 따라서 필드를 만들 때 좋은 선택이 아닐 수도 있습니다. 나는 그것이 내 방식이 최악인지 알기를 원했지만 나는 그렇지 않다는 것을 알았습니다. 감사! – paxinco

0

경우 나도 몰라.

import java.awt.Color; 

import javax.swing.BorderFactory; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 


public class TestClass { 
    static JFrame frame = new JFrame(); 
    static JPanel[] panel_order = new JPanel[20]; // 20 the number of panels you have 

//generating the panels 
public static void main(String[] args){  
    frame.setBounds(0, 0, 500, 400); 

    for(int i=0;i<panel_order.length;i++){ 
     JPanel panel = new JPanel(); 
     // you can set the panel's location like: 
     panel.setBounds(20*i, 0, 80, 50); 
     //and border if you are making diagrams 
     panel.setBorder(BorderFactory.createLineBorder(Color.BLACK)); 
     panel_order[i] = panel; 
     frame.add(panel); 
    } 
frame.setVisible(true); 
    //now you can access your panels by calling panel_order[panel_number]; 
     //example display the 5th panel's location 
     System.out.println(panel_order[5].getLocation()); 
    } 
} 
+0

고마워요! 하지만 내가 할 수있는, 내 질문에 더 정확한 필드에 할당 된 또는이 때 UML 다이어그램을 만들고 그것을 dessign 때 신경 쓰지 않아도 알 수 있습니까? – paxinco

+0

할당하지 않는 것이 더 쉽습니다. 그것은 각 방향으로 작용할 것입니다. 원하는대로 할 수 있습니다. – user6740407