2015-04-26 55 views
3

我和我的組合框的一個問題,我搜索無處不在,我的代碼是好的。但是,當我執行程序它顯示了我一個錯誤顯示java.lang.NullPointerException組合框在Java doesn't工作BlueJ的

這裏的我的代碼

package InventarioGUI; 

    import java.awt.*; 
    import java.awt.event.*; 
    import javax.swing.*; 
    import java.sql.SQLException; 
    import java.sql.PreparedStatement; 
    import java.sql.*; 



public class VentanaInventario extends JFrame implements ActionListener 
{ 

    private JComboBox cmbProducto, cmbProveedor; 
    ConexionInventario Con = new ConexionInventario(); 
    private PreparedStatement PST = null; 

    DefaultTableModel md; 
    JTable tabla; 
    Object data [][] = {}; 
    String cabeza[] = {"Cantidad", "Fecha Entrada", "Precio"}; 
    JScrollPane scroll;  

    public VentanaInventario() 
    { 
     super ("Inventario"); 

     ComboProducto(); 
     setLayout(null); 

     cmbProducto = new JComboBox(); 
     cmbProducto.setMaximumRowCount(5); 
     cmbProducto.setBounds (120, 10, 150, 20); 
     add(cmbProducto); 
    } 

    private void ComboProducto(){ 
     try 
     { 
      String Sql = "SELECT Nombre_Producto FROM Producto"; 
      Con.ExeSql(Sql); 

      while(Con.RS.next()){ 
       String pat = Con.RS.getString("Nombre_Producto"); 
       cmbProveedor.addItem(pat); 

      } 
     } 

     catch(Exception ex){ 
      JOptionPane.showMessageDialog(null, ex); 
     } 
    } 

    public static void main (String args[]) 
    { 
     try 
     { 
      VentanaInventario frmVentanaInventario = new VentanaInventario(); 
      frmVentanaInventario.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      frmVentanaInventario.setSize (300, 250); 
      frmVentanaInventario.setVisible(true); 
     } 

     catch (Exception ex) 
     { 
     JOptionPane.showMessageDialog(null, "Error presentado al realizar operación", " VentanaInventario", JOptionPane.ERROR_MESSAGE); 
     } 
    } 
} 

所有的連接和一切都在另一個類,它很好。 Pleeease,幫助,我有這個日子,我不知道我還能做什麼!

+0

你可以請你發佈你的stacktrace? – Mureinik

+0

它只給我一個JOptionPane – EyMarie

+0

使用「ex.printStackTrace」將堆棧跟蹤打印到控制檯 – MadProgrammer

回答

0

在使用ComboProducto()方法之前,您需要實例化cmbProveedor

只需添加以下行:

cmbProveedor = new JComboBox(); 

你可以把此行無論是在構造函數中ComboProducto()方法調用之前,或添加線內ComboProducto()使用cmbProveedor之前。

+0

忽略cmbProveedor 我只使用ComboProducto()的方法和cmbProducto具有ComboBox的名字 – EyMarie

+0

好吧,我已經看到你看到的東西.. 但它顯示我 – EyMarie

+0

你不能忽視cmbProveedor因爲錯誤你使用它通過cmbProveedor.addItem(pat);在ComboProducto()裏面。每次創建VentanaInventario()的實例時;你可以調用ComboProducto();因爲它是你的構造函數的第二行。只聲明一個變量不會實例化它或實際創建它。如果你沒有使用cmbProveedor,那麼刪除該行。否則,您必須在調用new之前實例化它。由於在實際創建之前使用cmbProveedor,因此您將獲得空指針異常。 –