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

4 respostas
danielfns

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 :(

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)
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);	
	}
    
    
}

brigadão pessoal!

4 Respostas

_Renatu

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

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

danielfns

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

baaaaaaaaahhh cara é verdade!!!

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

hheheheh valew mesmo cara! foi de muita ajuda!

T

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

Boa…

Criado 6 de dezembro de 2007
Ultima resposta 2 de jul. de 2008
Respostas 4
Participantes 4