Bom…dei uma mechida no Codigo e consegui fazer algumas mudanças.
sendo assim… o problema é…
na classe Escolher uf Action…
Eu consigo salvar no Banco se somente selecionar o id_municipio na combobox… pelo campo do Banco ser do tipo int
porém se eu colocar vamos supor NA COMBOBOX --> (1 CANOAS)
não salva e da um erro assim…
java.lang.String cannot be cast to java.lang.Integer
at br.com.impacta.cliente.app.action.bairro.BairroOkAction.actionPerformed(BairroOkAction.java:59)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
erro dessa classe…
BairroOkAction
public void actionPerformed(ActionEvent e) {
Bairro domain;
try {
String NomeBairro = view.getNomeJTextField().getText();
UFVO uf = (UFVO) view.getUfJComboBox().getSelectedItem();
String nome = (String) view.getMunicipioJComboBox().getSelectedItem().toString();
Integer municipio = (Integer) view.getMunicipioJComboBox().getSelectedItem();
if (view.getaAlterar() != null) {
domain = (Bairro) view.getaAlterar();
} else {
domain = new Bairro();
}
domain.setNome(NomeBairro); // seta o nome do bairro
domain.setMunicipio(new Municipio());
domain.getMunicipio().setNome(String.valueOf(municipio));
domain.getMunicipio().setId(municipio);
view.getService().validar(domain); // valida
view.getService().salvar(domain); // salva
view.carrega_nome_bairro(NomeBairro, uf);
[color=red]java.lang.NumberFormatException: For input string: “CANOAS”
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at br.com.impacta.cliente.app.action.bairro.BairroOkAction.actionPerformed(BairroOkAction.java:81)
[/color]
@Override
public void actionPerformed(ActionEvent e) {
Bairro domain;
try {
String NomeBairro = view.getNomeJTextField().getText();
UFVO uf = (UFVO) view.getUfJComboBox().getSelectedItem();
String municipio = (String) view.getMunicipioJComboBox()
.getSelectedItem();
Integer id = (Integer) view.getMunicipioJComboBox()
.getSelectedIndex();
if (view.getaAlterar() != null) {
domain = (Bairro) view.getaAlterar();
} else {
domain = new Bairro();
}
domain.setNome(NomeBairro); // seta o nome do bairro
// domain.setMunicipio(new Municipio());
domain.setMunicipio(new Municipio());
domain.getMunicipio().setNome(municipio);
domain.getMunicipio().setNome(String.valueOf(id));
domain.getMunicipio().setId(Integer.parseInt(municipio)); >>> Onde fiz a conversão que vc me orientou
// domain.getMunicipio().setNome(String.valueOf(municipio));
view.getService().validar(domain); // valida
view.getService().salvar(domain); // salva
view.carrega_nome_bairro(NomeBairro, uf);
} catch (NumberFormatException cause) {
cause.printStackTrace();
JOptionPane.showMessageDialog(
view,
"erro ao carregar" + cause.getMessage()
+ cause.getLocalizedMessage());
} catch (BairroException e1) {
e1.printStackTrace();
} catch (Exception e1) {
e1.printStackTrace();
}
O problema é que vc tá passando a String “CANOAS”, por exemplo, e querendo transformar ela em um int. Aí ñ vai dar msm não. Isto aqui não funciona:
Integer.parseInt(“CANOAS”).
Só vai dar certo se a String na qual vc der um parseInt conter apenas elementos numéricos.
Ex.: Integer.parseInt(“1234”);
Vamos lá..
Estou passando Uma String...com a numeracao ao lado.. exemplo 1 - CANOAS
Isso está na combobox.. na classe EscolherufAction.
sendo assim...
a conveorsão que vc passou deveria ter dado certo cara.. nao sei onde to errando..
SELECT b.id_bairro, b.nm_bairro, m.id_municipio, m.nm_municipio FROM bairro b INNER JOIN municipio m ON(m.id_municipio = b.id_municipio) WHERE b.nm_bairro LIKE ? AND m.id_uf = ?
[color=red]java.lang.NumberFormatException: For input string: “1-CANOAS”
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at br.com.impacta.cliente.app.action.bairro.BairroOkAction.actionPerformed(BairroOkAction.java:58)
at javax.swing.AbstractButton.fireActionPerfor[/color]
linha 58
int municipio = Integer.parseInt((String) view.getMunicipioJComboBox().getSelectedItem());
fiz assim... e mesmo assim insiste no erro huahuahuahuaa..
ve se fiz certo..
@Override
public void actionPerformed(ActionEvent e) {
Bairro domain;
try {
String NomeBairro = view.getNomeJTextField().getText();
UFVO uf = (UFVO) view.getUfJComboBox().getSelectedItem();
String[] splitComboBox = ((String) view.getMunicipioJComboBox()
.getSelectedItem()).split("-");
int idDoMunicipio = Integer.parseInt(splitComboBox[0]);
if (view.getaAlterar() != null) {
domain = (Bairro) view.getaAlterar();
} else {
domain = new Bairro();
}
domain.setNome(NomeBairro); // seta o nome do bairro
domain.getMunicipio().setId(idDoMunicipio);
view.getService().validar(domain); // valida
view.getService().salvar(domain); // salva
view.carrega_nome_bairro(NomeBairro, uf);