I'm trying to clear everything in my JPanel in an easier way than hard coding it all. I have a for loop which works great for JTextFields but nothing else. The commented out block makes everything work but I wanted to see if I could add the JPanels contained within on the fly as well.
List<Component> controls = new ArrayList<>();
controls.addAll(Arrays.asList(this.getComponents()));
/*controls.addAll(Arrays.asList(jPanel1.getComponents()));
controls.addAll(Arrays.asList(jPanel2.getComponents()));
controls.addAll(Arrays.asList(jPanel3.getComponents()));
controls.addAll(Arrays.asList(jPanel4.getComponents()));
controls.addAll(Arrays.asList(jPanel5.getComponents()));
controls.addAll(Arrays.asList(jPanel6.getComponents()));
controls.addAll(Arrays.asList(jPanel7.getComponents()));
controls.addAll(Arrays.asList(jPanel8.getComponents()));
controls.addAll(Arrays.asList(jPanel9.getComponents()));
controls.addAll(Arrays.asList(jPanel10.getComponents()));
controls.addAll(Arrays.asList(jPanel11.getComponents()));
controls.addAll(Arrays.asList(jPanel12.getComponents()));
controls.addAll(Arrays.asList(jPanel13.getComponents()));*/
for(Component control : controls) {
if(control instanceof JTextField) {
System.out.println(control.toString());
JTextField ctrl = (JTextField) control;
ctrl.setText("");
} else if (control instanceof JList) {
System.out.println(control.toString());
JList list = (JList) control;
for (int i = 0; i < list.getModel().getSize(); i++) {
list.remove(i);
}
} else if (control instanceof JTable) {
System.out.println(control.toString());
JTable table = (JTable) control;
for (int i=0;i < table.getRowCount();i++) {
table.getModel().setValueAt("", i, 0);
}
for (int i=0;i < table.getColumnCount();i++) {
table.getModel().setValueAt("", 0, i);
}
} else if (control instanceof JRadioButton) {
System.out.println(control.toString());
JRadioButton radio = (JRadioButton) control;
radio.setSelected(false);
} else if (control instanceof JPanel) {
JPanel panel = (JPanel) control;
controls.addAll(Arrays.asList(panel.getComponents()));
}
}