Pessoal,
Tenho um problema com meu comboBox. Tenho 3 classes:
Funcionando:
public class Moeda {
private String moeda;
private int id;
public Moeda(int id, String moeda){
this(moeda);
this.id = id;
}
public Moeda(String moeda){
this.moeda = moeda;
}
public int getID(){
return id;
}
public void setID(int id){
this.id = id;
}
public String getMoeda(){
return moeda;
}
public void setMoeda(String moeda){
this.moeda = moeda;
}
public String toString(){
String moeda = this.moeda;
return moeda;
}
public boolean equals(Object o){
if (o instanceof Moeda){
Moeda cia = (Moeda) o;
if (cia.getMoeda().equals(this.moeda)){
return true;
}else{
return false;
}
}else{
return false;
}
}
}
Funcionando:
import dao.MoedaDAO;
import java.util.List;
import javax.swing.JComboBox;
public class ComboMoeda extends JComboBox{
public void carregarMoeda(){
MoedaDAO moeda = new MoedaDAO();
List lista = moeda.listaMoeda();
this.removeAllItems();
for(int i = 0; i < lista.size(); i++){
this.addItem(lista.get(i));
}
setMaximumRowCount(5);
}
}
Meu problema começa aqui:
ComboMoeda comboMoeda = new ComboMoeda();
comboMoeda.carregarMoeda(); //chamada para popular o combo - OK
comboMoeda.setEditable(false); // OK
comboMoeda.getModel().setSelectedItem("RS"); // Funciona, a interface acata esse set.
Moeda moeda = (Moeda) comboMoeda.getSelectedItem(); //acusa erro e pára a execução.
int id = moeda.getID();
Então gera esse Exception:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to base.Moeda
at crassus.Index$7.mouseClicked(Index.java:1408)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270)
at java.awt.Component.processMouseEvent(Component.java:6508)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4501)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:682)
at java.awt.EventQueue$3.run(EventQueue.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:696)
at java.awt.EventQueue$4.run(EventQueue.java:694)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
Resumo da ópera… Quando eu faço um setSelectedItem a interface acata perfeitamente. Mas, quando chamo o método getID() da classe Moeda, ele dá esse erro. Fiz um teste, e chamei o getSelectedIndex(), o resultado foi -1
Há alguma forma de dar um setSelectedItem sem dar esse erro? No caso, não me adiantaria o setSelectedIndex().
Desde já Obrigado.
P.S.: Minha classe MoedaDAO está OK,não coloquei aqui pois creio que não seria necessário.