Minha aplicação desktop deve adicionar um livro atribuindo o valor de seus atributos a classe pai. O problema é que quando tento adicionar, me aparece o erro abaixo:
Exception in thread “AWT-EventQueue-0” java.lang.NumberFormatException: null
at java.lang.Long.parseLong(Long.java:404)
at java.lang.Long.parseLong(Long.java:483)
at incluirlivro.JanelaIncluirLivro.actionPerformed(JanelaIncluirLivro.java:392)
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.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
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:3321)
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.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)
Já chequei na classe pai os tipos dos setters e getters, e todos estão certos. Alguém tem alguma dica?
IncluirLivro.java (Classe pai):
package incluirlivro;
public class IncluirLivro {
private String tituloLivro;
private String autorLivro;
private String edicaoLivro;
private String isbnLivro;
private String categoriaLivro;
private Long precoLivro;
private Long precoProcionalLivro;
private int estoqueLivro;
private String resumoLivro;
public String getTituloLivro() {
return tituloLivro;
}
public void setTituloLivro(String tituloLivro) {
this.tituloLivro = tituloLivro;
}
public String getAutorLivro() {
return autorLivro;
}
public void setAutorLivro(String autorLivro) {
this.autorLivro = autorLivro;
}
public String getEdicaoLivro() {
return edicaoLivro;
}
public void setEdicaoLivro(String edicaoLivro) {
this.edicaoLivro = edicaoLivro;
}
public String getIsbnLivro() {
return isbnLivro;
}
public void setIsbnLivro(String isbnLivro) {
this.isbnLivro = isbnLivro;
}
public String getCategoriaLivro() {
return categoriaLivro;
}
public void setCategoriaLivro(String categoriaLivro) {
this.categoriaLivro = categoriaLivro;
}
public long getPrecoLivro() {
return precoLivro;
}
public void setPrecoLivro(Long precoLivro) {
this.precoLivro = precoLivro;
}
public long getPrecoProcionalLivro() {
return precoProcionalLivro;
}
public void setPrecoProcionalLivro(Long precoProcionalLivro) {
this.precoProcionalLivro = precoProcionalLivro;
}
public int getEstoqueLivro() {
return estoqueLivro;
}
public void setEstoqueLivro(int estoqueLivro) {
this.estoqueLivro = estoqueLivro;
}
public String getResumoLivro() {
return resumoLivro;
}
public void setResumoLivro(String resumoLivro) {
this.resumoLivro = resumoLivro;
}
}
JanelaIncluirLivro.java (classe da janela):
package incluirlivro;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;
public class JanelaIncluirLivro extends JFrame implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;
private JPanel contentPane;
private JLabel label;
private JLabel lblTituloDoLivro;
private JTextField tituloLivro;
private JLabel lblNewLabel;
private JTextField autorLivro;
private JLabel lblEdio;
private JTextField edicaoLivro;
private JLabel lblIsbn;
private JTextField isbLivro;
private JLabel lblCategoria;
private JComboBox<String> categoriaLivro;
private JLabel lblPreoDoLivro;
private JTextField precoLivro;
private JLabel lblPreoPromocional;
private JTextField precoPromocionalLivro;
private JLabel lblNewLabel_3;
private JTextField estoqueLivro;
private JLabel lblResumoDoLivro;
private JTextPane resumoLivro;
private JButton btnCancelar;
private JButton btnOk;
String txtErro;
IncluirLivro l = new IncluirLivro();
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
JanelaIncluirLivro frame = new JanelaIncluirLivro();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public JanelaIncluirLivro() {
setBackground(Color.ORANGE);
setTitle("Incluir Livro");
setResizable(false);//Não permite maximizar a tela
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 346);
contentPane = new JPanel();
contentPane.setBackground(UIManager.getColor("Button.background"));
contentPane.setForeground(Color.GREEN);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
label = new JLabel("");
lblTituloDoLivro = new JLabel("Titulo do Livro");
lblTituloDoLivro.setFont(new Font("Tahoma", Font.BOLD, 12));
lblTituloDoLivro.setForeground(Color.BLUE);
tituloLivro = new JTextField();
tituloLivro.setColumns(10);
lblNewLabel = new JLabel("Autor");
lblNewLabel.setFont(new Font("Tahoma", Font.BOLD, 12));
lblNewLabel.setForeground(Color.BLUE);
autorLivro = new JTextField();
autorLivro.setColumns(10);
lblEdio = new JLabel("Edi\u00E7\u00E3o");
lblEdio.setFont(new Font("Tahoma", Font.BOLD, 12));
lblEdio.setForeground(Color.BLUE);
edicaoLivro = new JTextField();
edicaoLivro.setColumns(10);
lblIsbn = new JLabel("ISBN");
lblIsbn.setFont(new Font("Tahoma", Font.BOLD, 12));
lblIsbn.setForeground(Color.BLUE);
isbLivro = new JTextField();
isbLivro.setColumns(10);
lblCategoria = new JLabel("Categoria");
lblCategoria.setFont(new Font("Tahoma", Font.BOLD, 12));
lblCategoria.setForeground(Color.BLUE);
categoriaLivro = new JComboBox<String>();
categoriaLivro.setToolTipText("Categoria Livro");
categoriaLivro.addItem("Autoajuda");
categoriaLivro.addItem("Aventura");
categoriaLivro.addItem("Ciências/Sociais");
categoriaLivro.addItem("Clássico");
categoriaLivro.addItem("Drama");
categoriaLivro.addItem("Economia");
categoriaLivro.addItem("Erótico");
categoriaLivro.addItem("Ficção/Científica");
categoriaLivro.addItem("Filosofia");
categoriaLivro.addItem("História");
categoriaLivro.addItem("Infantil/Juvenil");
categoriaLivro.addItem("Literatura");
categoriaLivro.addItem("Mitologia");
categoriaLivro.addItem("Poesia");
categoriaLivro.addItem("Policial");
categoriaLivro.addItem("Romance");
categoriaLivro.addItem("Suspense");
categoriaLivro.addItem("Tecnologia da Informação");
categoriaLivro.addItem("Terror");
categoriaLivro.addItem("Outros");
lblPreoDoLivro = new JLabel("Pre\u00E7o do Livro");
lblPreoDoLivro.setFont(new Font("Tahoma", Font.BOLD, 12));
lblPreoDoLivro.setForeground(Color.BLUE);
precoLivro = new JTextField();
precoLivro.setColumns(10);
lblPreoPromocional = new JLabel("Pre\u00E7o Promocional");
lblPreoPromocional.setFont(new Font("Tahoma", Font.BOLD, 12));
lblPreoPromocional.setForeground(Color.BLUE);
precoPromocionalLivro = new JTextField();
precoPromocionalLivro.setColumns(10);
lblNewLabel_3 = new JLabel("Estoque");
lblNewLabel_3.setForeground(Color.BLUE);
lblNewLabel_3.setBackground(new Color(240, 240, 240));
lblNewLabel_3.setFont(new Font("Tahoma", Font.BOLD, 12));
estoqueLivro = new JTextField();
estoqueLivro.setColumns(10);
lblResumoDoLivro = new JLabel("Resumo do Livro");
lblResumoDoLivro.setFont(new Font("Tahoma", Font.BOLD, 12));
lblResumoDoLivro.setForeground(Color.BLUE);
resumoLivro = new JTextPane();
btnCancelar = new JButton("Cancelar");
btnCancelar.setFont(new Font("Tahoma", Font.BOLD, 12));
btnCancelar.setForeground(Color.BLUE);
btnCancelar.addActionListener(this);
btnOk = new JButton("OK");
btnOk.setForeground(Color.BLUE);
btnOk.setFont(new Font("Tahoma", Font.BOLD, 12));
btnOk.addActionListener(this);
GroupLayout gl_contentPane = new GroupLayout(contentPane);
gl_contentPane.setHorizontalGroup(
gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addGroup(gl_contentPane.createParallelGroup(Alignment.TRAILING)
.addComponent(label)
.addGroup(gl_contentPane.createSequentialGroup()
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
.addComponent(lblTituloDoLivro)
.addComponent(lblNewLabel)
.addComponent(lblEdio))
.addGap(53)
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
.addComponent(autorLivro, GroupLayout.DEFAULT_SIZE, 282, Short.MAX_VALUE)
.addComponent(tituloLivro, GroupLayout.DEFAULT_SIZE, 282, Short.MAX_VALUE)
.addComponent(edicaoLivro, GroupLayout.DEFAULT_SIZE, 282, Short.MAX_VALUE)))
.addGroup(gl_contentPane.createSequentialGroup()
.addContainerGap(282, Short.MAX_VALUE)
.addComponent(btnOk)
.addPreferredGap(ComponentPlacement.UNRELATED)
.addComponent(btnCancelar))
.addGroup(gl_contentPane.createSequentialGroup()
.addComponent(lblIsbn)
.addGap(113)
.addComponent(isbLivro, GroupLayout.DEFAULT_SIZE, 282, Short.MAX_VALUE))
.addGroup(gl_contentPane.createSequentialGroup()
.addComponent(lblCategoria)
.addGap(83)
.addComponent(categoriaLivro, 0, 282, Short.MAX_VALUE))
.addGroup(gl_contentPane.createSequentialGroup()
.addComponent(lblPreoDoLivro)
.addGap(54)
.addComponent(precoLivro, GroupLayout.DEFAULT_SIZE, 282, Short.MAX_VALUE))
.addGroup(gl_contentPane.createSequentialGroup()
.addComponent(lblPreoPromocional)
.addGap(29)
.addComponent(precoPromocionalLivro, GroupLayout.DEFAULT_SIZE, 282, Short.MAX_VALUE))
.addGroup(gl_contentPane.createSequentialGroup()
.addComponent(lblNewLabel_3)
.addGap(92)
.addComponent(estoqueLivro, GroupLayout.DEFAULT_SIZE, 282, Short.MAX_VALUE))
.addGroup(gl_contentPane.createSequentialGroup()
.addComponent(lblResumoDoLivro)
.addPreferredGap(ComponentPlacement.RELATED, 39, Short.MAX_VALUE)
.addComponent(resumoLivro, GroupLayout.PREFERRED_SIZE, 282, GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
gl_contentPane.setVerticalGroup(
gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
.addComponent(label)
.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
.addComponent(lblTituloDoLivro)
.addComponent(tituloLivro, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
.addComponent(autorLivro, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(lblNewLabel))
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
.addComponent(edicaoLivro, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(lblEdio))
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
.addComponent(lblIsbn)
.addComponent(isbLivro, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
.addComponent(categoriaLivro, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(lblCategoria))
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
.addComponent(precoLivro, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(lblPreoDoLivro))
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
.addComponent(precoPromocionalLivro, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(lblPreoPromocional))
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
.addComponent(estoqueLivro, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(lblNewLabel_3))
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(resumoLivro, GroupLayout.PREFERRED_SIZE, 58, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
.addComponent(btnCancelar)
.addComponent(btnOk)))
.addGroup(gl_contentPane.createSequentialGroup()
.addGap(28)
.addComponent(lblResumoDoLivro)))
.addGap(219))
);
contentPane.setLayout(gl_contentPane);
}
@Override
public void actionPerformed(ActionEvent arg0) {
if (arg0.getSource() == btnCancelar) {
System.exit(0);
}
else if (arg0.getSource() == btnOk)
do {
if(tituloLivro.getText().equals("") || autorLivro.getText().equals("") ||
edicaoLivro.getText().equals("") || precoLivro.getText().equals("") ||
precoPromocionalLivro.getText().equals("") || estoqueLivro.getText().equals("")){
txtErro = "Nenhum campo pode estar vazio!";
}
else if(autorLivro.getText().length() > 100 || tituloLivro.getText().length() > 100){
txtErro = txtErro + "\nTitulo e autor do livro devem ter no máximo 100 caracteres!";
}
else if (Long.parseLong(precoLivro.getText()) > 1000 || Long.parseLong(precoPromocionalLivro.getText()) > 1000 ||
Long.parseLong(precoLivro.getText()) <= 0 || Long.parseLong(precoPromocionalLivro.getName()) <= 0){
txtErro = txtErro + "\nLimite do preço do livro e preço promocional deve ser maior que R$ 0,00 e menor que R$ 1.000,00!";
}
else if (Integer.parseInt(estoqueLivro.getText()) <= 0){
txtErro = txtErro + "\nEstoque deve ser maior que zero!";
}
}while(tituloLivro.getText().equals("") || autorLivro.getText().equals("") ||
edicaoLivro.getText().equals("") || precoLivro.getText().equals("") ||
precoPromocionalLivro.getText().equals("") || estoqueLivro.getText().equals("") ||
autorLivro.getText().length() > 100 || tituloLivro.getText().length() > 100 ||
Long.parseLong(precoLivro.getText()) > 1000 || Long.parseLong(precoPromocionalLivro.getText()) > 1000 ||
Long.parseLong(precoLivro.getText()) <= 0 || Long.parseLong(precoPromocionalLivro.getName()) <= 0 ||
Integer.parseInt(estoqueLivro.getText()) <= 0);
l.setTituloLivro(tituloLivro.getText());
l.setAutorLivro(autorLivro.getText());
l.setEdicaoLivro(edicaoLivro.getText());
l.setPrecoLivro(Long.parseLong(precoLivro.getText()));
l.setPrecoProcionalLivro(Long.parseLong(precoPromocionalLivro.getText()));
l.setEstoqueLivro(Integer.parseInt(estoqueLivro.getText()));
JOptionPane.showMessageDialog(null, "Livro adicionado com sucesso!");
}
}