2016-08-23 9 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の1つをmasterDialogに追加すると、それをBorderLayoutの中央に追加します。マスターパネルを効果的にオーバーレイしているので、1つしか表示されません。 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

このコンボボックスにアクションリスナーを追加するにはどうすればいいですか?ありがとう –

関連する問題