Fala galera, estou pensando em criar uma tela genérica e montar os campos desta janela com base no banco de dados, ou seja tenho uma tabela em meu banco de dados que guardo o nome de cada objeto no sistema e seus campos, então quando chamo a janela genérica eu passo como parâmetro o nome do objeto, aí eu pesquiso no banco de dados os campos deste objeto para montar então montar os campos na janela com o componente JTextField. Para isso criei uma classe que monta uma collection do tipo List contendo os componentes JTextFields, um para cada campo do banco de dados, e retorna essa collection para a janela que deverá ler essa collection e montar os campos na tela.
Maaaasss… não consigo fazer isso funcionar na prática, vejam um exemplo do que estou tentando fazer:
GeraCampos gC = new GeraCampos();
gC.GeraCampos("especialidades");
List campos = gC.GetCampos();
for(int x=1;x<campos.size();x++){
JLabel jl = new JLabel();
jl = (JLabel) campos.get(x);
jl.setBounds(10, 10, jl.getWidth(), jl.getHeight());
pnTela.add(jl);
JTextField jt = (JTextField) campos.get(x+1);
jt.setBounds(110, 10, jt.getWidth(), jt.getHeight());
pnTela.add(jt);
}
pnTela.add(pnTabela);
pnTabela.setBounds(10, 80, 365, 100);
No código acima estou recebendo uma exception:
Exception in thread “main” java.lang.ClassCastException: javax.swing.JTextField
at Interface.TelaGenerica.initComponentes(TelaGenerica.java:118)
at Interface.TelaGenerica.><init>(TelaGenerica.java:30)
at Interface.TelaGenerica.main(TelaGenerica.java:260)
Java Result: 1
Acredito que não seja permitido fazer o Cast para o tipo JTextField, mas alguém tem alguma idéia de como resolver o problema?
Valew !