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

Exception in thread “AWT-EventQueue-0” java.lang.NumberFormatException: For input string: “”
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at TelaPrincipal.actionPerformed(TelaPrincipal.java:118)

Alguem da um help por favor, ta dando esse erro: safram.setQuantidade(Integer.parseInt(txtQuantidade.getText())); … essa é a linha 118 mas não sei se o erro está aqui

Código abaixo:

import javax.swing.;
import java.awt.
;
import java.awt.event.;
import java.sql.
;

public class TelaPrincipal extends JFrame implements ActionListener {
private JTextField txtPartNumber, txtDescricao, txtQuantidade, txtValor;
private JLabel lblPartNumber, lblDescricao, lblQuantidade, lblValor;
private JButton inserir, alterar, excluir, carregar, sair, consultar;
private Safram safram;
private Connection conn;

public TelaPrincipal(Connection conn, Safram safram) {
	this(conn);
	this.safram = safram;
	txtPartNumber.setText(safram.getPartNumber());
	txtDescricao.setText(safram.getDescricao());
	txtQuantidade.setText("" + safram.getQuantidade());
	txtValor.setText("" + safram.getValor());

}

public TelaPrincipal(Connection conn) {
	super("Cadastro de Peças");
	txtPartNumber = new JTextField(20);
	txtDescricao = new JTextField(30);
	txtQuantidade = new JTextField(10);
	txtValor = new JTextField(10);

	lblPartNumber = new JLabel("partnumber");
	lblDescricao = new JLabel("descricao");
	lblQuantidade = new JLabel("quantidade");
	lblValor = new JLabel("valor");

	inserir = new JButton("Cadastrar");
	alterar = new JButton("Alterar");
	excluir = new JButton("Excluir");
	carregar = new JButton("Carregar");
	sair = new JButton("Sair");
	consultar = new JButton("Consultas");
	this.conn = conn;

	Container caixa = getContentPane();
	caixa.setLayout(new BorderLayout());

	JPanel painelBotoes = new JPanel(new FlowLayout());
	JPanel painelPedidos = new JPanel(new FlowLayout(FlowLayout.RIGHT));
	JPanel painelCentro = new JPanel(new GridLayout(3, 1));
	JPanel painelLinha1 = new JPanel(new FlowLayout(FlowLayout.LEFT));
	JPanel painelLinha2 = new JPanel(new FlowLayout(FlowLayout.LEFT));
	JPanel painelLinha3 = new JPanel(new FlowLayout(FlowLayout.LEFT));
	JPanel painelLinha4 = new JPanel(new FlowLayout(FlowLayout.LEFT));

	
	painelLinha1.add(lblPartNumber);
	painelLinha1.add(txtPartNumber);
	
	
	painelLinha2.add(lblDescricao);
	painelLinha2.add(txtDescricao);
	
	
	painelLinha3.add(lblQuantidade);
	painelLinha3.add(txtQuantidade);
	
	
	painelLinha4.add(lblValor);
	painelLinha4.add(txtValor);
	
	
	
	
	painelCentro.add(painelLinha1);
	painelCentro.add(painelLinha2);
	painelCentro.add(painelLinha3);
	painelCentro.add(painelLinha4);
	painelBotoes.add(inserir);
	painelBotoes.add(alterar);
	painelBotoes.add(excluir);
	painelBotoes.add(carregar);
	painelBotoes.add(sair);
	painelPedidos.add(consultar);
	caixa.add(painelCentro, BorderLayout.CENTER);
	caixa.add(painelBotoes, BorderLayout.SOUTH);
	caixa.add(painelPedidos, BorderLayout.NORTH);

	inserir.addActionListener(this);
	alterar.addActionListener(this);
	excluir.addActionListener(this);
	carregar.addActionListener(this);
	consultar.addActionListener(this);
	sair.addActionListener(this);

	setSize(552, 255);
	setLocationRelativeTo(null);
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	setVisible(true);

}


public void actionPerformed(ActionEvent e) {
	if (e.getSource() == sair) {
		System.exit(0);
	} 
  else if (e.getSource() == consultar) {
		new TelaConsulta(conn);
		dispose();
	} 
  else {
		safram = new Safram();
		try {
			safram.setPartNumber(txtPartNumber.getText());
			} catch (NumberFormatException e1) {
			safram.setPartNumber(null);
		}
		safram.setDescricao(txtDescricao.getText());
		safram.setQuantidade(Integer.parseInt(txtQuantidade.getText()));
		safram.setValor(Double.parseDouble(txtValor.getText()));
		
	}
	if (e.getSource() == inserir) {
		safram.incluir(conn);
		txtPartNumber.setText(safram.getPartNumber());
	} else if (e.getSource() == alterar) {
		
		if (safram.getDescricao().length() > 0
				) {
			
			safram.atualizar(conn);
		} else {
			JOptionPane.showMessageDialog(this, "Dados invalidos",
					"Safram", JOptionPane.ERROR_MESSAGE);
		}
	} else if (e.getSource() == excluir) {
		safram.excluir(conn);
		safram.carregar(conn);
		txtPartNumber.setText(safram.getPartNumber());
		txtDescricao.setText(safram.getDescricao());
		txtQuantidade.setText("" + safram.getQuantidade());
		txtValor.setText("" + safram.getValor());
	
	
	//Mexer AQUI
	
	} else if (e.getSource() == carregar) {
		safram.carregar(conn);
		txtPartNumber.setText(safram.getPartNumber());
		txtDescricao.setText(safram.getDescricao());
		txtQuantidade.setText("" + safram.getQuantidade());
		txtValor.setText("" + safram.getValor());
	
	
	} 
}

}

Um texto vazio é uma String.

Vc pode fazer o seguinte pra contornar:

String textQtd = txtQuantidade.getText();
int qtd = 0;
if(textQtd.equals("")){
   qtd = 0;
} else {
   qtd = Integer.parseInt(txtQuantidade.getText());
}

safram.setQuantidade(qtd);