【问题标题】:ComboBox in java doesn´t work bluejjava中的ComboBox不起作用bluej
【发布时间】:2015-07-05 04:11:12
【问题描述】:

我的 ComboBox 有问题,我到处搜索,我的代码很好。但是当我执行程序时,它显示一个错误 java.lang.NullPointerException

这是我的代码

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

所有连接和一切都在另一个类中,这很好。 拜托,帮助,我有几天的时间,我不知道我还能做什么!

【问题讨论】:

  • 你能发布你的堆栈跟踪吗?
  • 它只显示了一个 JOptionPane
  • 使用“ex.printStackTrace”将堆栈跟踪打印到控制台
  • setLayout(null);这怎么没有问题?

标签: java null jcombobox bluej


【解决方案1】:

您需要先实例化cmbProveedor,然后才能在您的ComboProducto() 方法中使用它。

只需添加以下行:

cmbProveedor = new JComboBox();

您可以在ComboProducto() 方法调用之前将此行放在构造函数中,或者在使用cmbProveedor 之前将该行添加到ComboProducto() 中。

【讨论】:

  • 忽略 cmbProveedor 我只使用 ComboProducto() 有方法,而 cmbProducto 有 ComboBox 的名称
  • 您不能忽略 cmbProveedor,因为您使用 cmbProveedor.addItem(pat);在 ComboProducto() 中。每次创建 VentanaInventario() 的实例时;你打电话给 ComboProducto();因为它是构造函数的第二行。仅仅声明一个变量并不会实例化它或实际创建它。如果您不使用 cmbProveedor,则删除该行。否则,您必须在使用它之前通过调用 new 来实例化它。由于您在实际创建 cmbProveedor 之前使用了它,因此您将得到一个空指针异常。
猜你喜欢
  • 2017-06-16
  • 1970-01-01
  • 2012-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-11
相关资源
最近更新 更多