2016-08-23 3 views
-5

Ich versuche, GUI wie im ersten Bild angegeben, aber ich bin nicht in der Lage, es zu tun. here is the image Ich bin nur ein combo1, Combo2, combo3 und serialNoLabel statt 5 bekommen [5 ist die Größe der Liste]Wie können Komponenten im JDialog dynamisch hinzugefügt werden?

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

Sie nicht ein Layout für Sie masterDialog haben? Kannst du auch Bildschirm drucken, was du bekommst? Mit einem schnellen Blick glaube ich wirklich, dass es ein Layout-Problem ist. – LBes

+0

Wenn Sie eines der MasterPanels zum MasterDialog hinzufügen, fügen Sie es zum Mittelpunkt eines BorderLayouts hinzu. Sie überlagern Ihre MasterPanels effektiv, sodass nur einer angezeigt wird. Sie benötigen ein MainPanel (JPanel) mit einem FlowLayout. Sie würden die masterPanels zum mainPanel hinzufügen und schließlich das mainPanel zum masterDialog hinzufügen. –

+0

@LBes Ich benutze MigLayout für MasterDialog. –

Antwort

3

Ich glaube, es ist ein Layout-Problem Ihr masterPanels führenden voneinander oben zu sein.

Also ich würde so etwas tun:

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]); 
    } 

Natürlich konnte man auch andere Layouts. Aber ich glaube, dass Sie für eine FlowLayout gehen wollen. Siehe die Dokumentation über FlowLayouthere.

Sie können mehr über andere Layouts erfahren here

+0

Es hat funktioniert Vielen Dank für Sie Hilfe, wirklich zu schätzen .... –

+0

@VarshalDavda sicher! – LBes

+0

können Sie mir bitte sagen, wie kann ich Aktion Listener zu diesen Kombinationsfeldern hinzufügen? Danke –

Verwandte Themen