Есть несколько способов добраться до dynamicaly добавлены компоненты качели дерево:
1-й подход:
panel.getComponent(n);
возвращает n'th компонент в панели (Container). (П есть порядок, что компонент, добавленный к родителю (родитель panel
здесь)) (вы должны знать, индекс компонента) таким образом, вы можете использовать ((JComboBox)panel.getComponent(3)).getSelectedIndex()
2-й подход
непосредственно добавить слушателей, когда динамическое добавление ваших компонентов;
JButton b1 = new JButton("add");
b1.addActionListener(e -> {
JComboBox<String> color = new JComboBox<String>();
color.addActionListener(x -> { myFormBean.setColor(color.getSelectedItem();) });
panel.add(color);
JTextField name = new JTextField();
name.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void removeUpdate(DocumentEvent e) {
myFormBean.setName(name.getText());
}
@Override
public void insertUpdate(DocumentEvent e) {
myFormBean.setName(name.getText());
}
@Override
public void changedUpdate(DocumentEvent e) {
myFormBean.setName(name.getText());
}
});
panel.add(name);
panel.revalidate();
panel.repaint();
});
Таким образом, вам не нужно получать динамически добавленные компоненты.
третий подход может использовать рамки для связывания данных,
4RD подход ...
* "Чисто теоретически .." * Не очень заинтересованы в теоретических вопросов. Практически, зачем добавлять такие компоненты? Каков прецедент, оправдывающий его? В стороне это выглядит так, что GUI лучше будет нуждаться в 1) Объект, который содержит «String» для текстового поля и «int» для индекса данных, выбранных в комбо. 2) Используйте JList с настраиваемым визуализатором для отображения объектов, сформированных в (1). 3) Когда пользователь выбирает элемент списка, покажите детали в одном текстовом поле и поле со списком вне списка. .. –
.. Но все эти советы зависят от предположений о том, чего вы пытаетесь достичь. Что-нибудь лучше, чем предположения, объясните, как этот GUI должен работать для пользователя. –