Problema: JComboBox - getSelectedItem().toString() retornando erro

e ai pessoal, é o seguinnte, estou precisando de ajuda aqui :?

fiz um JComboBox que revebe um array de strings, o metodo getSelectedItem() retorna um objeto, então fiz um getSelectedItem().toString… mas pra minha surpresa mesmo assim não funcionou :frowning:

aparentemente meu programa não aparece nenhum erro de sintaxe nem nada, roda direitinho…
mas ta dando erro justamente na linha do getSelectedItem().toString():

Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at view.UIInsereProduto.novoProduto(UIInsereProduto.java:106)
at view.UIInsereProduto.access$0(UIInsereProduto.java:101)
at view.UIInsereProduto$1.actionPerformed(UIInsereProduto.java:82)
[code]
public class UIInsereProduto extends Interfaces {

private static UIInsereProduto tela;

private JLabel lbDesc;
private JTextField tfDesc;
private JLabel lbEstoque;
private JTextField tfEstoque;
private JLabel lbPreco;
private JTextField tfPreco;
private JLabel lbTipo;
private JComboBox cbTipo; 

private JButton btnInserir;
private DefaultTableModel modelo;
      
private UIInsereProduto(Programas programa,DefaultTableModel modelo) {   
    
	
    super(programa,"Novo Produto");
    this.setSize(630, 200);
    this.getContentPane().setLayout(null);
    this.setResizable(false);
   
    this.modelo = modelo;
    
    lbDesc = new JLabel("Descrição:");
    lbDesc.setBounds(new Rectangle(15, 30, 67, 21));
    this.getContentPane().add(lbDesc, null);
    tfDesc = new JTextField();
    tfDesc.setToolTipText("Informe nome ou descrição do produto");
    tfDesc.setBounds(new Rectangle(80, 30, 500, 21));
    this.getContentPane().add(tfDesc, null);
    
    lbEstoque = new JLabel("Estoque:");
    lbEstoque.setBounds(new Rectangle(15, 80, 57, 21));
    this.getContentPane().add(lbEstoque, null);
    tfEstoque = new JTextField();
    tfEstoque.setToolTipText("Quantidade em estoque");
    tfEstoque.setBounds(new Rectangle(80, 80, 60, 21));
    this.getContentPane().add(tfEstoque, null);
    
    lbPreco = new JLabel("Preço:");
    lbPreco.setBounds(new Rectangle(15, 130, 57, 21));
    this.getContentPane().add(lbPreco, null);
    tfPreco = new JTextField();
    tfPreco.setToolTipText("Valor do Produto");
    tfPreco.setBounds(new Rectangle(80, 130, 60, 21));
    this.getContentPane().add(tfPreco, null);
    
    lbTipo = new JLabel("Tipo:");
    lbTipo.setBounds(new Rectangle(295, 80, 57, 21));
    this.getContentPane().add(lbTipo, null);
   
    String [] tiposProdutos = {"Alimentício", "Limpeza", "Computação", "Eletrônicos", "Beleza","Outros"}; //array de strings do JComboBox
    JComboBox cbTipo = new JComboBox(tiposProdutos); //JComboBox
           
    cbTipo.setBounds(new Rectangle(350, 80, 150, 21));
    this.getContentPane().add(cbTipo, null);

    btnInserir = new JButton("OK");
    btnInserir.setBounds(new Rectangle(504, 120, 100, 30));
    this.getContentPane().add(btnInserir, null);
    
    btnInserir.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent arg0) {
			novoProduto();
			tfDesc.setText(null);
			tfEstoque.setText(null);
			tfPreco.setText(null);
						
		}
		});

}


public static UIInsereProduto getInstance(Programas programa,DefaultTableModel modelo) {		
	if (tela == null){
		tela = new UIInsereProduto(programa,modelo);
	}
	return tela;
	
}

private void novoProduto() {
	
	String desc = tfDesc.getText();		
	int estoque = Integer.parseInt(tfEstoque.getText());
	float preco = Float.parseFloat(tfPreco.getText());
	String tipo = cbTipo.getSelectedItem().toString();//local do erro
	
	
	Produtos produto = new Produtos(desc,estoque,preco,tipo);
	meuPrograma.adicionaProduto(produto);
	modelo.fireTableDataChanged();
	this.setVisible(false);	
}

}
[/code]

brigadão pessoal!

muito provavelmente o metodo getSelectedItem esta retornando null
Se voce chamar o metodo toString de uma variavel que esta nula da NullPointerException.

Cara, fiquei uns 10 minutos olhando pro treco…
Fiz debug no Eclpse, passava pelo objeto certinho, mas na hora de entrar no método novoProduto() ele ficava null…

Até que eu notei a linha 56…

 JComboBox cbTipo = new JComboBox(tiposProdutos); //JComboBox  

Aqui tu (muito provavelmente sem querer) criou uma nova JComboBox, ao invés de inicializar aquela que tu tinha setado como variável global…
Só tirei o “JComboBox” da frente e funcionou direitinho…

Acontece :slight_smile:

Abraços

[quote=Preco]Cara, fiquei uns 10 minutos olhando pro treco…
Fiz debug no Eclpse, passava pelo objeto certinho, mas na hora de entrar no método novoProduto() ele ficava null…

Até que eu notei a linha 56…

 JComboBox cbTipo = new JComboBox(tiposProdutos); //JComboBox  

Aqui tu (muito provavelmente sem querer) criou uma nova JComboBox, ao invés de inicializar aquela que tu tinha setado como variável global…
Só tirei o “JComboBox” da frente e funcionou direitinho…

Acontece :slight_smile:

Abraços[/quote]

baaaaaaaaahhh cara é verdade!!!

isso é oque da ficar até tarde progamando :oops:

hheheheh valew mesmo cara! foi de muita ajuda!

Bom amigos este fórum me ajudou a responder uma dúvida qto. a armazenar o Ítem do ComboBox numa String…

Boa…