Tenho o código abaixo que funcionar perfeitamente exibindo os dados em uma jtable.
public List<Alternativas> findAlternativasEntities() {
return findAlternativasEntities(true, -1, -1);
}
[code] private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
DefaultTableModel dtm = (DefaultTableModel) this.jTable1.getModel();
AlternativasJpaController alt = new AlternativasJpaController();
dtm.setRowCount(0);
List<Alternativas> ctto = alt.findAlternativasEntities();
for (Iterator<Alternativas> it = ctto.iterator(); it.hasNext();) {
Alternativas alternativas = it.next();
Object [] rowData = {alternativas.getIdPergunta(),alternativas.getAlternativa1(),
alternativas.getAlternativa2(),alternativas.getAlternativa3(),alternativas.getAlternativa4()};
dtm.addRow(rowData);
[/code]
Só que preciso tbm utilizar o metodo abaixo para lista informações entrando com um INT como parâmetro, mais não consigue montar a lista.
Algué saberia me dizer como monta-lá?
public List<Alternativas> findAlternativas(Integer id) {
EntityManager em = getEntityManager();
try {
return (List<Alternativas>) em.find(Alternativas.class, id);
} finally {
em.close();
}
}
Infelizmente seu método não funciona perfeitamente. Motivo? Usa o DefaultTableModel. Isso significa que:
- Você está duplicando dados desnecessariamente;
- Você está usando sincronização em excesso;
- Você está gastando processamento à toa;
- Você irá ter mais dificuldade para inserir, remover ou ordenar linhas;
- Seu código está macarrônico e misturando dados de negócio com a interface gráfica.
Se vai usar a JTable, vale muito a pena entender como ela funciona. Pare um tempo, aprenda a montar um TableModel, e depois conversamos sobre sua dúvida. Isso é, se ela ainda existir.
Vini
O meu código funcionou quando eu usei alt.findAlternativasEntities(); ( para trazer todos os dados ), só gostaria de saber como altero o metodo para receber um parametro Int, pois quero que retorne apenas os dados cujo o Id for igual a minha variável.
…e sobre o lance do Default já vi algumas coisas negativas mesmo, vou procurar saber mais.
De qualquer forma Valeu.
Ocorre erro?
Não encontra?
Exception?
Não retorna nada?
drsMachado,
ele retorna o erro abaixo quando uso o metodo
[code]public ListfindAlternativas(Integer id) {
EntityManager em = getEntityManager();
try {
return (List) em.find(Alternativas.class, id);
} finally {
em.close();
}
}[/code]
O erro é nessa linha return (List) em.find(Alternativas.class, id);
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: jquest.Alternativas cannot be cast to java.util.List
at jquest.AlternativasJpaController.findAlternativas(AlternativasJpaController.java:114)
at jquest.jEditQuest.jButton1ActionPerformed(jEditQuest.java:277)
at jquest.jEditQuest.access$100(jEditQuest.java:33)
at jquest.jEditQuest$2.actionPerformed(jEditQuest.java:168)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6267)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6032)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Um pouco de java básico…
Um objeto de uma classe só pode ser convertido em um objeto igual ou que contenha os mesmos atributos que o que ele possui ou, quando tratamos de tipos primitivos, o tipo a ser “casteado” deve comportar o tipo original (não se pode fazer cast de long para int, mas de int para long, sem problemas).
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: jquest.Alternativas cannot be cast to java.util.List
Esse erro diz isto, pois o tipo retornado pelo método é um objetodo tipo Alternativas e não uma List ou ArrayList.
Duas possibilidades, monte a tua própria lista “na unha” (receba o valor retornado, instancie a lista, coloque o objeto nela e retorne-a) ou mude o tratamento na camada correspondente, para que ele chegue em condições de popular o DefaultTableModel (ele recebe como argumento para cada linha, um array de Object…)