2016-08-23 2 views
-5

첫 번째 그림과 같이 GUI를 만들려고하지만이를 할 수 없습니다. here is the image 내가 5 대신 하나의 combo1, combo2, combo3 및 serialNoLabel을 얻고있다JDialog에서 컴포넌트를 어떻게 동적으로 추가 할 수 있습니까?

ArrayList<String> list; // the size of the list is 5 
    JComboBox combo1[] = new JComboBox[list.size()]; 
    JComboBox combo2[] = new JComboBox[list.size()]; 
    JComboBox combo3[] = new JComboBox[list.size()]; 
    JLabel SerialNoLabel[] = new JLabel[list.size()]; 
    JPanel masterPanel[] = new JPanel[list.size()]; 

    JDialog masterDialog = new JDialog(); 
    masterDialog.setVisible(true); 
    masterDialog.setSize(800, 500); 
    masterDialog.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 
    masterDialog.setVisible(true); 
    for(int j =0; j < list.size(); j++) { 
     masterPanel[j] = new JPanel(); 
     SerialNoLabel[j] = new JLabel(list.get(j)); 
     masterPanel[j].add(SerialNoLabel[j]); 
     combo1[j] = new JComboBox(); 
     masterPanel[j].add(combo1[j]); 
     combo2[j] = new JComboBox(); 
     masterPanel[j].add(combo2[j]); 
     combo3[j] = new JComboBox(); 
     masterPanel[j].add(combo3[j]); 
     masterDialog.add(masterPanel[j]); 
     masterDialog.revalidate(); 
    } 
+0

에 대해 더 많은 정보를 얻을 수 있습니까? 또한 화면을 인쇄 할 수 있습니까? 빠른보기와 더불어 나는 그것이 정말로 배치 문제 다라고 생각한다. – LBes

+0

masterPanels 중 하나를 masterDialog에 추가하면이를 BorderLayout의 가운데에 추가합니다. 마스터 패널을 효과적으로 오버레이하므로 하나만 보여줍니다. FlowLayout이있는 mainPanel (JPanel)이 있어야합니다. masterPanel을 mainPanel에 추가하고 마지막으로 mainPanel을 masterDialog에 추가합니다. –

+0

@LBes masterDialog에 MigLayout을 사용하고 있습니다. –

답변

3

나는 그것이 서로의 상단에있을 당신의 masterPanels를 선도하는 레이아웃 문제 믿습니다 [5하는 목록의 크기입니다]. 물론

JPanel mainPanel = new JPanel(); 
FlowLayout experimentLayout = new FlowLayout(); 
mainPanel.setLayout(experimentLayout); 
for(int j =0; j < list.size(); j++) { 
     masterPanel[j] = new JPanel(); 
     SerialNoLabel[j] = new JLabel(list.get(j)); 
     masterPanel[j].add(SerialNoLabel[j]); 
     combo1[j] = new JComboBox(); 
     masterPanel[j].add(combo1[j]); 
     combo2[j] = new JComboBox(); 
     masterPanel[j].add(combo2[j]); 
     combo3[j] = new JComboBox(); 
     mainPanel.add(masterPanel[j]); 
    } 

을 당신이 할 수있는 다른 레이아웃뿐만 아니라 :

그래서 나는 같은 것을 할 것입니다. 하지만 당신이 FlowLayout에 가고 싶다고 생각합니다. FlowLayouthere에 대한 설명서를 참조하십시오.

당신은 당신 masterDialog의 레이아웃을 가지고 있지 않는 다른 레이아웃 here

+0

그것은 당신에게 도움을 주셔서 감사합니다, 정말 감사드립니다 .... –

+0

@ VarshalDavda 확실! – LBes

+0

이 콤보 상자에 어떻게 액션 리스너를 추가 할 수 있습니까? 감사합니다 –

관련 문제