我正在尝试制作一个GUI,您必须在其中填写一些信息以添加客户。
在未提供所有信息的情况下,我想弹出一个窗口,提示您必须填写所有信息,但我仍然遇到相同的错误。
如果输入所有信息,该代码将起作用并保存到SQL数据库:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String firstname = txtfirstname.getText();
String lastname = txtlastname.getText();
String country = txtcountry.getText();
int passport = Integer.parseInt(txtpassport.getText());
DateFormat da = new SimpleDateFormat("dd/MM/yyyy");
String date = da.format(txtdate.getDate());
if(firstname.equals("")||txtlastname.getText().equals("")||txtcountry.getText().equals("")||txtpassport.getText().equals("")||da.format(txtdate.getDate()).equals("")){
JOptionPane.showMessageDialog(null,"All fields have to be filled in....");
}else{
try {
DBCustomer.save(new Customer(firstname, lastname, passport, date, country));
JOptionPane.showMessageDialog(null,"Registration created");
txtfirstname.setText("");
txtlastname.setText("");
txtcountry.setText("");
txtpassport.setText("");
txtdate.setDate(null);
} catch (DBException ex) {
Logger.getLogger(DBCustomer.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
这是我不断得到的例外
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:592)
at java.lang.Integer.parseInt(Integer.java:615)
at project.gui.addCustomer.jButton1ActionPerformed(addCustomer.java:225)
at project.gui.addCustomer.access$000(addCustomer.java:31)
at project.gui.addCustomer$1.actionPerformed(addCustomer.java:173)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
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:6539)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6304)
at java.awt.Container.processEvent(Container.java:2239)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2297)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
at java.awt.Container.dispatchEventImpl(Container.java:2283)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
at java.awt.EventQueue$4.run(EventQueue.java:733)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
答案 0 :(得分:0)
基于Java文档。
public static int parseInt(String s)
throws NumberFormatException
Parses the string argument as a signed decimal integer. The characters in the string must all be decimal digits, except that the first character may be an ASCII minus sign '-' ('\u002D') to indicate a negative value or an ASCII plus sign '+' ('\u002B') to indicate a positive value. The resulting integer value is returned, exactly as if the argument and the radix 10 were given as arguments to the parseInt(java.lang.String, int) method.
Parameters:
s - a String containing the int representation to be parsed
Returns:
the integer value represented by the argument in decimal.
Throws:
NumberFormatException - if the string does not contain a parsable integer.
答案 1 :(得分:0)
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String firstname = txtfirstname.getText();
String lastname = txtlastname.getText();
String country = txtcountry.getText();
try{
int passport = Integer.parseInt(txtpassport.getText());
}
catch(NumberFormatException e)
{
//Here you could put your code to display a popup saying that
// Passport number is required
}
DateFormat da = new SimpleDateFormat("dd/MM/yyyy");
String date = da.format(txtdate.getDate());
if(firstname.equals("")||txtlastname.getText().equals("")||txtcountry.getText().equals("")||txtpassport.getText().equals("")||da.format(txtdate.getDate()).equals("")){
JOptionPane.showMessageDialog(null,"All fields have to be filled in....");
}else{
try {
DBCustomer.save(new Customer(firstname, lastname, passport, date, country));
JOptionPane.showMessageDialog(null,"Registration created");
txtfirstname.setText("");
txtlastname.setText("");
txtcountry.setText("");
txtpassport.setText("");
txtdate.setDate(null);
} catch (DBException ex) {
Logger.getLogger(DBCustomer.class.getName()).log(Level.SEVERE, null, ex);
}
}
}