Question

I am creating dialog which populates the Combo box with list of project code , when I click specific item on Combo Box it brings the information from database and display on same dialog using jLabels. Sometimes I want to disable combo box I do removeAllItems and set jLabels empty string as well with checkbox and continue next step like that. When I enable again I populate combobox with same object but when I click on it , it doesn't click and create errors. When I code for removeAllItems it works fine.

Here is my code fragments

// My Dialog Class

/// Fields 

    MsSqlDbProperties searchcomboitem;
    MsSqlDbProperties objcombo;
    String combos;
    Object comboitem ;

/// Constructor for my dialog called from another class

  public myDialog(java.awt.Frame parent, boolean modal) {
   super(parent, modal);
   initComponents();
   objcombo = new MsSqlDbProperties();
   objcombo.populatecombo(this);
  }

// Combo Box Item Clicked

      private void jComboBox2ActionPerformed(java.awt.event.ActionEvent evt) {                                           
   System.out.println("Combo Item Selected");
    comboitem = jComboBox2.getSelectedItem();
    combos = comboitem.toString();
    System.out.println(combos);
    objcombo.SearchProject(this, combos);
}  

// Disable Combo Box

private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {                                           

if (jComboBox2.isEnabled()) {

jComboBox2.setEnabled(false);
this.jComboBox2.removeAllItems();
System.out.println(" Combo Disabled...");

 }    else {

System.out.println(" Combo Enabled...");
jComboBox2.setEnabled(true);
objcombo.populatecombo(this);

}

 }  

// MyDBproperties Class

 /// Assume Connection Made here

/// my Search Project Method 


public boolean SearchProject(PurchaseDialog pd , String s) {


    boolean resp = false;
    searchcon = connector();

    try {

        String Sqlse = "SELECT * FROM ProjectAccount WHERE ProjectCode = ? ";
        PreparedStatement searchcmd = searchcon.prepareStatement(Sqlse);
        searchcmd.setString(1,s);

       ResultSet rst = searchcmd.executeQuery();

        if (rst.next()) {
            String add1 = rst.getString("ProjectName");

            pd.projectName.setText(add1);
            System.out.println("AFTER DISABLE");

        System.out.println(add1);
        String add2 = rst.getString("ProjectCode");
        pd.projectCodelabel.setText(add2);
        System.out.println(add2);

        String add3 = rst.getString("StartDate");
        pd.StartDate.setText(add3); 
        System.out.println(add3);

        String add4 = rst.getString("EndDate");
        pd.EndDate.setText(add4);
        System.out.println(add4);

        }

        searchcmd.close();
        searchcon.close();

        resp = true;

    } catch (Exception ex) {

        System.out.println("Error " + ex.getMessage());

    }

    return resp;
}  

// My populate combo Box Method

 public boolean populatecombo(PurchaseDialog pdc) {

  System.out.println("in populatecombo");
  boolean resp = false;
  populatecon = connector();

try {
    String Sqlsc = "SELECT ProjectCode FROM ProjectAccount";
    PreparedStatement combocmd = populatecon.prepareStatement(Sqlsc);
    ResultSet rsc = combocmd.executeQuery();

    while (rsc.next()) {
        pdc.jComboBox2.addItem(rsc.getString("ProjectCode"));

    }

    combocmd.close();
    populatecon.close();

} catch (Exception ex) {
    System.out.println("Error " + ex.getMessage());
}

return resp;

}

Here is the error list

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at
    ptakip.PurchaseDialog.jComboBox2ActionPerformed(PurchaseDialog.java:493) at 
    ptakip.PurchaseDialog.access$100(PurchaseDialog.java:14) at
    ptakip.PurchaseDialog$2.actionPerformed(PurchaseDialog.java:148) at
    javax.swing.JComboBox.fireActionEvent(JComboBox.java:1260) at
    javax.swing.JComboBox.contentsChanged(JComboBox.java:1331) at
    javax.swing.JComboBox.intervalRemoved(JComboBox.java:1351) at
    javax.swing.AbstractListModel.fireIntervalRemoved(AbstractListModel.java:179) at
    javax.swing.DefaultComboBoxModel.removeAllElements(DefaultComboBoxModel.java:174) at 
    javax.swing.JComboBox.removeAllItems(JComboBox.java:773) at
    ptakip.PurchaseDialog.jCheckBox1ActionPerformed(PurchaseDialog.java:510) at 
    ptakip.PurchaseDialog.access$300(PurchaseDialog.java:14) at
    ptakip.PurchaseDialog$4.actionPerformed(PurchaseDialog.java:165) at
    javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) at
    javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) at
    javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at
    javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:308) at
    javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at java.awt.Component.processMouseEvent(Component.java:6505) at
    javax.swing.JComponent.processMouseEvent(JComponent.java:3320) at
    java.awt.Component.processEvent(Component.java:6270) at
    java.awt.Container.processEvent(Container.java:2229) at
    java.awt.Component.dispatchEventImpl(Component.java:4861) at
    java.awt.Container.dispatchEventImpl(Container.java:2287) at
    java.awt.Component.dispatchEvent(Component.java:4687) at
    java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) at
    java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) at 
    java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) at 
    java.awt.Container.dispatchEventImpl(Container.java:2273) at
    java.awt.Window.dispatchEventImpl(Window.java:2719) at
    java.awt.Component.dispatchEvent(Component.java:4687) at
    java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735) at
    java.awt.EventQueue.access$200(EventQueue.java:103) at
    java.awt.EventQueue$3.run(EventQueue.java:694) at
    java.awt.EventQueue$3.run(EventQueue.java:692) at
    java.security.AccessController.doPrivileged(Native Method) at
    java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at
    java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) at 
    java.awt.EventQueue$4.run(EventQueue.java:708) at
    java.awt.EventQueue$4.run(EventQueue.java:706) at
    java.security.AccessController.doPrivileged(Native Method) at
    java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at 
    java.awt.EventQueue.dispatchEvent(EventQueue.java:705) at
    java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) at
    java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) at
    java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:154) at 
    java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:182) at
    java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251) at
    java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733) at
    java.awt.EventQueue.access$200(EventQueue.java:103) at
    java.awt.EventQueue$3.run(EventQueue.java:694) at
    java.awt.EventQueue$3.run(EventQueue.java:692) at
    java.security.AccessController.doPrivileged(Native Method) at
    java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at 
    java.awt.EventQueue.dispatchEvent(EventQueue.java:703) at
    java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) at
    java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) at
    java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) at
    java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) at
    java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) at 
    java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Was it helpful?

Solution

while clicking in jComboBox2 after removing all items from, the selected item will be null. Please check null or item count before perfoming the activity. Sample code is given

private void jComboBox2ActionPerformed(java.awt.event.ActionEvent evt)         
{                                           
    System.out.println("Combo Item Selected");
    comboitem = jComboBox2.getSelectedItem();
    if(null==comboitem)
       return ;

    combos = comboitem.toString();
    System.out.println(combos);
    objcombo.SearchProject(this, combos);
}  
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top