Я пытаюсь создать графический интерфейс, как показано на первой картинке, но я не могу этого сделать. here is the image Я получаю только один Combo1, combo2, combo3 и serialNoLabel вместо 5 [5, размера списка]Как можно динамически добавлять компоненты в 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();
}
У вас нет макета для вас masterDialog? Также вы можете распечатать экран, что вы получаете? С быстрым взглядом я действительно верю, что это вопрос макета. – LBes
Когда вы добавляете одну из masterPanels в masterDialog, вы добавляете ее в центр BorderLayout. Вы эффективно накладываете свои мастер-панели, так что только один показывает. Вам нужно иметь mainPanel (JPanel) с FlowLayout. Вы должны добавить masterPanels к mainPanel и, наконец, добавить mainPanel в masterDialog. –
@LBes Я использую MigLayout для masterDialog. –