Salve ho una classe movimentazione che servirebbe come inserimento o prelevamento di pezzi in semplice gestionale che sto facendo per scopi didattici ....
La classe funziona ma non funzionano i controlli se la classe viene lasciata vuota....

codice:
import java.awt.EventQueue;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.ParseException;

import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
import javax.swing.text.MaskFormatter;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;


public class Movimentazione extends JFrame {

	private JPanel contentPane;
	private JTextField locazione;
	private JTextField aumenta;
	private JTextField diminuisci;
	private int au,dim,cod,numRighe,idtemp;
	private MaskFormatter formato,formato1;
	private JFormattedTextField codice;
	private String loc;
	private ResultSet rstloc;
	private boolean test=true;  //per eseguire le operazioni successive

	//metodo per eseguire controllo del codice
	
	public boolean controllacodice(){
		
		
		boolean codicecont=false;
		
		
			// mi connetto al db e prelevo i valori
		    try {
			   	ConnettiDb myDb = new ConnettiDb("localhost","Gestionale","root","root");
			   	ResultSet rst = myDb.query("select * from materiale where Codice='"+cod+"';");
				
				// recupera il numero di righe del RestultSet
	            rst.last();
	            numRighe = rst.getRow();
	            rst.first();
	            //System.out.println(numRighe+"codice");      // x il controllo se ci sono dati
	            
	            // riposiziona il cursore di ResultSet all'inizio
	            
	            if (numRighe<1){
	            	JOptionPane.showMessageDialog(Movimentazione.this,"codice non presente nel database");
	            	codicecont=false;
	            	test=false;
	            }
	            else{
	            	codicecont=true;
	            }
	                        	
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}  
		
		//	System.out.println(codicecont);	   //per vedere come ritorna codicecont    
	    return codicecont;
	}
	
	//metodo per controllare se il codice è già presente in una determinata locazione
	
	public boolean codiceinlocazione(){
		
		
		boolean codiceinlocazione=false;
		
		
			try{
		 	ConnettiDb myDb = new ConnettiDb("localhost","Gestionale","root","root");
			rstloc = myDb.query("select * from materiale where Codice='"+cod+"' and Locazione='"+loc+"';");
			
			// recupera il numero di righe del RestultSet
	        rstloc.last();
	        numRighe = rstloc.getRow();
	        idtemp =rstloc.getInt("id");
	        rstloc.first();
	        System.out.println(numRighe+"inlocazione");//controllo se ci sono dati
	        
	        // riposiziona il cursore di ResultSet all'inizio
	        
	        if (numRighe<1){
	        	JOptionPane.showMessageDialog(null,"Codice non presente nella locazione");
	        	codiceinlocazione=false;
	        	test=false;
	        }
	        else if(numRighe>1){
	        	JOptionPane.showMessageDialog(null,"problema al database");
	        	codiceinlocazione=false;
	        }
	        else{
	        	codiceinlocazione=true;
	        }
	                    	
			} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			}   
		
		return codiceinlocazione;
	}
	
	
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Movimentazione frame = new Movimentazione();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public Movimentazione() {
		setTitle("Movimentazione pezzi");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblInserisciIlCodice = new JLabel("Inserisci il codice");
		lblInserisciIlCodice.setBounds(52, 63, 155, 15);
		contentPane.add(lblInserisciIlCodice);
		
		JLabel lblInserisciLaLocazione = new JLabel("Inserisci la locazione(loc A1=A01 ecc)");
		lblInserisciLaLocazione.setBounds(52, 98, 264, 15);
		contentPane.add(lblInserisciLaLocazione);
		
		JLabel lblInserisciLaQuantit = new JLabel("Inserisci n. pezzi");
		lblInserisciLaQuantit.setBounds(52, 157, 155, 15);
		contentPane.add(lblInserisciLaQuantit);
		
		try {
				formato =new MaskFormatter("########");
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			formato1 =new MaskFormatter("U##");
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
        
		codice = new JFormattedTextField(formato);
		codice.setBounds(258, 61, 114, 19);
		contentPane.add(codice);
	
		
		locazione = new JFormattedTextField(formato1);
		locazione.setBounds(334, 96, 38, 19);
		contentPane.add(locazione);
		
		aumenta = new JTextField();
		aumenta.setColumns(10);
		aumenta.setBounds(258, 155, 114, 19);
		contentPane.add(aumenta);
		
		
		JLabel lblEliminaNPezzi = new JLabel("Elimina n. pezzi");
		lblEliminaNPezzi.setBounds(52, 194, 155, 15);
		contentPane.add(lblEliminaNPezzi);
		
		diminuisci = new JTextField();
		diminuisci.setColumns(10);
		diminuisci.setBounds(258, 186, 114, 19);
		contentPane.add(diminuisci);
		
		// bottone e listener
		
		JButton btnEsegui = new JButton("Esegui");
		btnEsegui.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				String temp="        ";                  // prendo una stringa vuota di 8 caratteri (come il formatter) 
				                                         // per controllare che codice non sia vuoto
				
				String temp1="   ";                      // prendo una stringa vuota di 3 caratteri (come il formatter)
                                                         // per controllare che locazione non sia vuoto
				
				
				
				if(codice.getText().equals(temp) || locazione.getText().equals(temp1)){
					JOptionPane.showMessageDialog(null, "Inserisci il codice e la locazione");
					test=false;
				}
				else{
					String codic=codice.getText();   // prendo la stringa di codice
					cod=Integer.parseInt(codic);     // la trasformo in un numero
					
					loc=locazione.getText(); //prendo la stringa da locazione
					test=true;
				}
				
				String temp2=""   ;                   // stringa per il controllo dei campi aumenta e diminuisci
				
				
				System.out.println(test);
				if(aumenta.getText().equals(temp2) && diminuisci.getText().equals(temp2) && test){
					JOptionPane.showMessageDialog(null, "Inserisci un valore");
					test=false;
				}
				
				if(aumenta.getText().equals(temp2) && test){
					test=false;
				}
				else{
					String aument=aumenta.getText(); // prendo la stringa di aumenta
					au=Integer.parseInt(aument);     // la trasformo in un numero  
					test=true;
				}
				if(diminuisci.getText().equals(temp2)&& test){
					test=false;
				}
				else{
					String diminuisc=diminuisci.getText(); // prendo la stringa di diminuisci
					dim=Integer.parseInt(diminuisc);	   // la trasformo in un numero  
					
					test=true;
				}
				
				if(au>0 && dim>0 && test){                    //controllo che i campi aumenta e diminuisci non siano pieni insieme    
					JOptionPane.showMessageDialog(Movimentazione.this,"Non puoi inserire e togliere pezzi contemporaneamente");
					test=false;
				}
				
			
				System.out.println(controllacodice()+" "+codiceinlocazione());  //controllo dei metodi
				
				if(codiceinlocazione() && controllacodice() ){
					try {	
						ConnettiDb myDb = new ConnettiDb("localhost","Gestionale","root","root");
					
						Connection con = myDb.getConnessione();
						
						rstloc = myDb.query("select * from materiale where Codice='"+cod+"' and Locazione='"+loc+"';");
						rstloc.last();
						Statement dati = con.createStatement();  // si crea un oggetto Statement
						
						String sql="";
						rstloc.first();
						if(au>0){
							
							int npezzi=rstloc.getInt("Quantità");
							int npezziagg=npezzi+au;
							sql="update materiale set Quantità="+npezziagg+" where id="+idtemp+";";
							System.out.println(sql);
							Movimentazione.this.dispose();
							dati.executeUpdate(sql);// si esegue l'operazione di insert
						
						    dati.close();// si chiude lo Statement 
						
						    con.close();//si chiude la connessione
												
						}
						
						if(dim>0){
							
							int npezzi=rstloc.getInt("Quantità");
							int npezziagg=npezzi-dim;
							sql="update materiale set Quantità="+npezziagg+" where id="+idtemp+";";
							System.out.println(sql);
							Movimentazione.this.dispose();
							dati.executeUpdate(sql);// si esegue l'operazione di insert
						
						    dati.close();// si chiude lo Statement 
						
						    con.close();//si chiude la connessione
												
						}
					} catch (SQLException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					} catch (Exception e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					
				}
			}
		});
		btnEsegui.setBounds(255, 233, 117, 25);
		contentPane.add(btnEsegui);
		
		
		
	}
}
Il test(boolean) dovrebbe fermare l'applicazione via via che i campi non sono selezionati o incorretti , invece da un errore :

falseException in thread "AWT-EventQueue-0"
java.lang.NumberFormatException: For input string: ""
etc.etc.