Pessoal,
Tenho um formulário swing contendo JPanel e JScrollPane. Dentro destes painéis estão os campos ( JTextField, JFormattedTextField, JTextArea, JComboBox ).
Ao clicar em determinado botão deste formulário, será chamado um método que limpará todos estes campos.
Problema: preciso que o método de limpeza abaixo se torne recursivo, devido existir dentro do JPanel um JScrollPane com JTextArea que também deverá ser limpo.
A bronca está apenas na linha Component c = container.getComponent(i); onde a IDE aponta erro dizendo:
Segue código:
/**
* Limpar campos do JPanel ou JScrollPane passado como parâmetro.
*
* @param painel
*/
public void limparFormulario(Object painel) {
int qtdComponentes = 0;
if (painel instanceof JPanel) {
JPanel container = (JPanel) painel;
qtdComponentes = container.getComponentCount();
}
if (painel instanceof JScrollPane) {
JScrollPane container = (JScrollPane) painel;
qtdComponentes = container.getComponentCount();
}
for (int i = 0; i < qtdComponentes; i++) {
Component c = container.getComponent(i);
if (c instanceof JScrollPane) {
limparFormulario(c);
}
if (c instanceof JTextField) {
JTextField field = (JTextField) c;
field.setText("");
if (!field.isEditable()) {
field.setBackground(new Color(240, 240, 240));
}
}
if (c instanceof JFormattedTextField) {
JFormattedTextField field = (JFormattedTextField) c;
field.setText("");
if (!field.isEditable()) {
field.setBackground(new Color(240, 240, 240));
}
}
if (c instanceof JTextArea) {
JTextArea field = (JTextArea) c;
field.setText("");
System.out.println("asd apagando jtextarea");
}
if (c instanceof JComboBox) {
JComboBox field = (JComboBox) c;
field.setSelectedIndex(0);
}
}
}