java中的ComboBox不起作用bluej

Posted

技术标签:

【中文标题】java中的ComboBox不起作用bluej【英文标题】:ComboBox in java doesn´t work 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);这怎么没有问题? 【参考方案1】:

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

只需添加以下行:

cmbProveedor = new JComboBox();

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

【讨论】:

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

以上是关于java中的ComboBox不起作用bluej的主要内容,如果未能解决你的问题,请参考以下文章

打开 ComboBox 时 KeyDown 事件不起作用?

ComboBox 在 ExtJS 的 EditorGridPanel 中不起作用

WPF MVVM ComboBox SelectedItem 或 SelectedValue 不起作用

extjs 组合框中的验证器功能 IE6 不起作用

为什么我在DataTemplate中的Cascading Dropdown不起作用?

ComboBox仅在重新启动时更新,Java