JComboBox触发空指针,即使它没有被调用?

时间:2020-04-16 23:31:24

标签: java

从事学校项目。我的程序为jcombobox提供了一个动作侦听器,一旦我点击了Submit,便将其清除并隐藏。那就是当它说空指针时,即使我没有使用它,也没有在清除它后单击它。而且,它只会在我第一次清除它时发生。

JComboBox sidComboBox = new JComboBox();
        sidComboBox.setFont(new Font("Lantinghei TC", Font.PLAIN, 15));
        sidComboBox.setBounds(139, 127, 222, 27);
        contentPane.add(sidComboBox);
        
         btnSubmit.addActionListener (new ActionListener ()  //adding action listener to the button component and creating a specific action performed method (override) for the button
	                {
	                    public void actionPerformed (ActionEvent e)
	                    {        
	                    	
	                    	
	                    	if (btnSelect == 5)
	                    	{
	                    		sidComboBox.setEnabled(false);
	                    		sidComboBox.setVisible(false);
	                    		fnComboBox.setEnabled(false);
	                    		lnComboBox.setEnabled(false);
	                    		pnComboBox.setEnabled(false);
	                    		fnComboBox.setVisible(false);
	                    		lnComboBox.setVisible(false);
	                    		pnComboBox.setVisible(false);
	                    	}
	                    	
	                    	btnAdd.setEnabled(true);  
	                    	btnEdit.setEnabled(true);  
	                    	btnDelete.setEnabled(true);  
	                    	btnSearch.setEnabled(true);  
	                    	btnViewAll.setEnabled(true);    
	                    	
	                    	TAFirstName.setVisible(false);
	                		TALastName.setVisible(false);
	                		TAStudentID.setVisible(false);
	                		TAPhoneNumber.setVisible(false);
	                		lblFirstName.setVisible(false);
	                		lblLastName.setVisible(false);
	                		lblPhoneNumber.setVisible(false);
	                		lblStudentId.setVisible(false);
	                		btnSubmit.setVisible(false);
	                		btnSubmit.setEnabled(false);
	                		btnEditor.setVisible(false);
	                        btnEditor.setEnabled(false);

	    			        TAFirstName.setEditable(false);
	    			        TALastName.setEditable(false);
	    			        TAStudentID.setEditable(false);
	    			        TAPhoneNumber.setEditable(false);
	    			        
	    			        TAFirstName.setText(null);
                    		TALastName.setText(null);
                    		TAStudentID.setText(null);
                    		TAPhoneNumber.setText(null);
                    		
                    		sidComboBox.setVisible(false);
                    		sidComboBox.setEnabled(false);
                    		sidComboBox.removeAllItems();
                    		fnComboBox.setVisible(false);
                    		fnComboBox.setEnabled(false);
                    		fnComboBox.removeAllItems();
                    		lnComboBox.setVisible(false);
                    		lnComboBox.setEnabled(false);
                    		lnComboBox.removeAllItems();
                    		pnComboBox.setVisible(false);
                    		pnComboBox.setEnabled(false);
                    		pnComboBox.removeAllItems();
                    		
	    			        btnSelect = 0;

	                    }
	                }
	        );  
		 
		 sidComboBox.addActionListener (new ActionListener ()  //adding action listener to the button component and creating a specific action performed method (override) for the button
	                {
	                    public void actionPerformed (ActionEvent e)
	                    {      
	                    	int check = db.getNum() - 1;
	                        if (check == -1) {
	                        	
	                    	}
	                    	
	                    	else {
	                    		int studentID = (int) sidComboBox.getSelectedItem();
	                    		int num = db.getNum();
	        			    
	                    		for (int b1 = 0; b1 < num; b1++)
	                    		{
	                    			int nom = (db.studentList[b1].getStudentID());
	        			    	
	                    			if (studentID == nom)
	                    			{
	                    				fnComboBox.setSelectedItem((db.studentList[b1]).getFirstName());
	                    				lnComboBox.setSelectedItem((db.studentList[b1]).getLastName());
	                    				pnComboBox.setSelectedItem((db.studentList[b1]).getPhoneNumber());
	                    				break;
	                    			}	   	                    			
	                    		}
	                    		
	                    		
	                    	}
	    			        
	                    }
	                }
	        );    

该错误专门在此行发生,不是在我使用它时发生,而是在我按下“提交”按钮时发生。

int studentID = (int) sidComboBox.getSelectedItem();

我知道它为空,但是当它为空时,我没有在盒子上打电话。那么为什么告诉我它为null?

1 个答案:

答案 0 :(得分:0)

问题是您在提交方法中调用了sidComboBox.removeAllItems();。这会更改选择,因此会按照教程here中所述触发ActionEvent

如何规避此问题here

相关问题