Boa tarde
a minha dúvida é a seguinte
eu quero mostrar 2 strings diferentes num mesmo jComboBox, mas enviar somente uma para o meu banco de dados.
conforme este exemplo aqui
http://img34.imageshack.us/img34/2527/cnpj.jpg
eu tenho o código, mas nao estou conseguindo definir a maneira de mostrar estes 2 itens no comboBox. Como eu faço isso?
[code]
public void mostrarIdContrato()
{
try
{
NotaFiscalDao dao = new NotaFiscalDao();
List listaContratos = dao.ListaIdContrato();
for (CadContrato cc : listaContratos)
cbIDContrato.addItem(cc.getId_contrato()); // +" — "+ cc.getContratada());
//Até aqui eu faço aparecer o id_contrato, e enviar ele pro banco,
//mas se juntar o Contratada, ai envia as duas Strings.
String itemComboBox = cbIDContrato.getItemAt(0).toString();
String[] itemsComboBox = itemComboBox.split("---");
String idContrato = itemsComboBox[0];
String contratada = itemsComboBox[1];
}
catch (SQLException ex)
{
JOptionPane.showMessageDialog(this, ex, "\n Erro", JOptionPane.ERROR_MESSAGE, null);
}
}[/code]
Obrigado!
Nunca use uma String pura para preencher itens no banco de dados.
Em vez disso, popule o “model” do JComboBox com objetos de uma determinada classe, e então sobreescreva o método toString() dessa classe para mostrar o que você quer.
Para popular seu banco, usando o dado da JComboBox, faça um cast do retorno de getSelectedItem para a sua classe, e então pegue os campos desejados da sua classe.
Eu costumo criar uma classe bem boboca, que fica no mesmo arquivo que a classe onde defino as combos, só para não ficar criando um monte de classes públicas no programa.
Então, na verdade eu nem sei como implementar como vc disse.
se esta forma é melhor, com certeza vou verificar depois
mas é que o caso agora faltam poucos dias pra apresentar o tcc e falta isso
Vou dar um exemplo bem boboca daqui a pouco. Por favor, entenda o que ele quer fazer, para você poder fazer você mesmo.
package guj;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class ExemploJComboBox extends JFrame {
/** Esta é uma classe bem simples, que você usa só para preencher o combo. */
static class Feriado {
public Feriado (int dia, String mes, String nomeFeriado) {
this.dia = dia; this.mes = mes; this.nomeFeriado = nomeFeriado;
}
public int getDia() {
return dia;
}
public String getMes() {
return mes;
}
public String getNomeFeriado() {
return nomeFeriado;
}
public void setDia(int dia) {
this.dia = dia;
}
public void setMes(String mes) {
this.mes = mes;
}
public void setNomeFeriado(String nomeFeriado) {
this.nomeFeriado = nomeFeriado;
}
/** Este método é o que você usa para mostrar um feriado no combo */
@Override
public String toString() { return nomeFeriado; }
private String nomeFeriado;
private int dia;
private String mes;
}
public ExemploJComboBox() {
super();
initialize();
}
/**
* Este é o método ao qual você deve prestar atenção. Entenda-o direitinho!
*/
private JComboBox getCboFeriados() {
if (cboFeriados == null) {
cboFeriados = new JComboBox();
DefaultComboBoxModel dcbm = (DefaultComboBoxModel) cboFeriados.getModel();
dcbm.addElement(new Feriado (7, "setembro", "Independência"));
dcbm.addElement(new Feriado (15, "outubro", "Proclamação da República"));
dcbm.addElement(new Feriado (25, "dezembro", "Natal"));
cboFeriados.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Feriado feriadoSelecionado = (Feriado) cboFeriados.getSelectedItem();
if (feriadoSelecionado == null) return;
lblFeriadoEscolhido.setText( "O feriado escolhido é " +
feriadoSelecionado.getNomeFeriado() +
", que ocorre em " +
feriadoSelecionado.getDia() +
" de " +
feriadoSelecionado.getMes());
}
});
}
return cboFeriados;
}
private JPanel getJContentPane() {
if (jContentPane == null) {
lblFeriadoEscolhido = new JLabel();
lblFeriadoEscolhido.setText("");
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getCboFeriados(), BorderLayout.NORTH);
jContentPane.add(lblFeriadoEscolhido, BorderLayout.SOUTH);
}
return jContentPane;
}
private void initialize() {
this.setSize(500, 100);
this.setContentPane(getJContentPane());
this.setTitle("Exemplo JComboBox");
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
ExemploJComboBox thisClass = new ExemploJComboBox();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JComboBox cboFeriados = null;
private JLabel lblFeriadoEscolhido = null;
}
Exemplo: