2012-05-16 87 views
0

我試圖用MySQL開發java swing中的stockManager應用程序。在運行代碼時出現以下錯誤:異常在線程「AWT-EventQueue-0」java.lang.NumberFormatException異常:對於輸入字符串:「」

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 org.bil.service.StockManager.addNewItem(StockManager.java:355) 
at org.bil.service.StockManager.actionPerformed(StockManager.java:163) 
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) 

我有點長....請原諒附加代碼below..Its ..

StockManager.java

package org.bil.service; 

import java.io.*; 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.event.*; 

import org.res.bil.PersonInfo; 

import java.sql.ResultSet; 
import java.sql.ResultSetMetaData; 
import java.util.*; 

public class StockManager implements ActionListener { 

ArrayList itemList; 
StockManagerDAO stockManagerDAO; 
// Declaration 
JPanel topPanel, bottomPanel; 
JScrollPane scrollPane; 
JFrame frame; 
JMenuBar menubar = new JMenuBar();; 
JMenu menu = new JMenu(); 
JMenuItem menuItem; 
Toolkit kit = Toolkit.getDefaultToolkit(); 
Dimension screenSize = kit.getScreenSize(); 
int screenHeight = screenSize.height; 
int screenWidth = screenSize.width; 
Image img = kit.getImage("images/icon.JPG"); 
String entryDate; 
int itemNo; 
String itemName; 
double unitPrice; 
double qty; 
double totalPrice; 
String supplier; 
String remarks; 
JTextField txtEntryDate; 
JTextField txtItemNo; 
JTextField txtItemName; 
JTextField txtUnitPrice; 
JTextField txtQty; 
JTextField txtTotalPrice; 
JTextField txtSupplier; 
JTextField txtRemarks; 
JButton BttnSaveAdded; 
// Main 
public static void main(String[] args) { 

    new StockManager(); 
} 

// Constructor 
StockManager() { 

    frame = new JFrame("Stock Manager"); 
    frame.setSize(680, 200); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setLocation(screenWidth/4, screenHeight/4); 
    frame.setIconImage(img); 
    frame.show(); 
    userInterface(); 
    itemList = new ArrayList(); 
    stockManagerDAO = new StockManagerDAO(); 
} 

// User Interface 
public void userInterface() 

{ 
    menubar.add(menu); 
    menu = new JMenu("Options"); 
    menuItem = new JMenuItem("Add New Item"); 
    menu.add(menuItem); 
    menuItem.addActionListener(this); 
    menuItem = new JMenuItem("Delete Item"); 
    menu.add(menuItem); 
    menuItem.addActionListener(this); 
    menuItem = new JMenuItem("Search Item"); 
    menu.add(menuItem); 
    menuItem.addActionListener(this); 
    menuItem = new JMenuItem("Sort Item"); 
    menu.add(menuItem); 
    menuItem.addActionListener(this); 
    menuItem = new JMenuItem("View All Item"); 
    menu.add(menuItem); 
    menuItem.addActionListener(this); 
    menuItem = new JMenuItem("Backup Item"); 
    menu.add(menuItem); 
    menuItem.addActionListener(this); 
    menubar.add(menu); 
    menu = new JMenu("Help"); 
    menuItem = new JMenuItem("Help Contents"); 
    menu.add(menuItem); 
    menuItem.addActionListener(this); 
    menuItem = new JMenuItem("About"); 
    menu.add(menuItem); 
    menuItem.addActionListener(this); 
    menubar.add(menu); 
    frame.setJMenuBar(menubar); 
    JPanel topPanel = new JPanel(); 
    JPanel bottomPanel = new JPanel(); 
    // Add Buttons To Bottom Panel 
    JButton addItem = new JButton("Add New Item"); 
    JButton deleteItem = new JButton("Delete Item"); 
    JButton searchItem = new JButton("Item"); 
    JButton sortItem = new JButton("Sort Item"); 
    JButton viewAllItems = new JButton("View AllItem"); 

    JLabel label = new JLabel(
      "<HTML><FONT FACE = ARIALSIZE = 2><B>Use The options below and In The Menu To Manage Stock"); 
    // Add Action Listeners 
    addItem.addActionListener(this); 
    deleteItem.addActionListener(this); 
    searchItem.addActionListener(this); 
    sortItem.addActionListener(this); 
    viewAllItems.addActionListener(this); 
    topPanel.add(label); 
    bottomPanel.add(addItem); 
    bottomPanel.add(deleteItem); 
    bottomPanel.add(searchItem); 
    bottomPanel.add(sortItem); 
    bottomPanel.add(viewAllItems); 
    frame.getContentPane().add(topPanel, BorderLayout.NORTH); 
    frame.getContentPane().add(bottomPanel, BorderLayout.SOUTH); 
    frame.setResizable(false); 

} 

public void actionPerformed(ActionEvent ae) { 
    if (ae.getActionCommand() == "Add New Item") { 
     //totalPrice = unitPrice * qty; 
     // txtTotalPrice= totalPrice; 
     addNewItem(); 

    } 

    else if (ae.getActionCommand() == "Search Item") { 
     searchItem(); 

    } 

    else if (ae.getActionCommand() == "Sort Contacts") { 
     sortItems(); 

    } 

    else if (ae.getActionCommand() == "Delete Item") { 
     deleteItem(); 

    } 

    else if (ae.getActionCommand() == "View All Items") { 

     viewAllItemsInStock(); 

    } 

    else if (ae.getActionCommand() == "About") { 
     JOptionPane.showMessageDialog(frame, 
     "About StockManager:Helps to manage the stock by adding,deleting,searching and displaying items in the stock,",null, JOptionPane.INFORMATION_MESSAGE); 

    } else if (ae.getActionCommand() == "Help Contents") { 
     showHelp(); 

    } else if (ae.getActionCommand() == "Backup Contacts") { 
     JFileChooser chooser = new JFileChooser(); 
     chooser.setCurrentDirectory(new File(".")); 
     chooser.setMultiSelectionEnabled(false); 

     chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 
     chooser.showSaveDialog(frame); 
     FileOutputStream bfout = null; 
     FileInputStream bfin = null; 
     String filename = null; 

     int p; 

     try { 
      filename = chooser.getSelectedFile().getPath(); 
     } catch (Exception e) { 
     } 

     try { 
      bfout = new FileOutputStream(filename + "/data.dat"); 
     } catch (Exception e) { 

     } 
     try { 
      bfin = new FileInputStream("data/data.dat"); 
     } catch (Exception e) { 

     } 

     try { 
      do { 
       p = bfin.read(); 
       if (p != -1) 
        bfout.write(p); 
      } while (p != -1); 
     } catch (Exception e) { 

     } 

    } 

} 

private void showHelp() { 
    // TODO Auto-generated method stub 

} 

private void viewAllItemsInStock() { 
    /*ResultSet rs= st.executeQuery("Select * from test"); 
    ResultSetMetaData md = rs.getMetaData(); 
    int columns = md.getColumnCount(); 
    for (int i = 1; i <= columns; i++) { 
    columnNames.addElement(md.getColumnName(i)); 
    } 
    while (rs.next()) { 
    Vector row = new Vector(columns); 
    for (int i = 1; i <= columns; i++) { 
    row.addElement(rs.getObject(i)); 
    } 
    data.addElement(row); 
    } 
    rs.close(); 
    st.close(); 
    } 
    catch(Exception e) {} 
    JFrame tab=new JFrame(); 
    JTable table = new JTable(data, columnNames); 
    JScrollPane scrollPane = new JScrollPane(table); 
    tab.add(scrollPane); 
    tab.setVisible(true); 
    tab.setSize(300,100); 
    } 
    }); 
    }*/ 

} 

private void deleteItem() { 
    // TODO Auto-generated method stub 

} 

private void sortItems() { 
    // TODO Auto-generated method stub 

} 

private void searchItem() { 
    // TODO Auto-generated method stub 

} 

public void addItemFrame() { 
    JFrame newFrame; 
    newFrame = new JFrame("Add New"); 
    newFrame.setSize(220, 250); 
    newFrame.setResizable(false); 
    newFrame.setIconImage(img); 

    JLabel lblEntryDate = new JLabel("Item EntryDate: "); 
    JLabel lblItemNo = new JLabel("Item No: "); 
    JLabel lblItemName = new JLabel("Item Name: "); 
    JLabel lblUnitPrice = new JLabel("Item UnitPrice: "); 
    JLabel lblQty = new JLabel("Item Qty: "); 
    JLabel lblTotalPrice = new JLabel("Item TotalPrice: "); 
    JLabel lblSupplier = new JLabel("SupplierDetails: "); 
    JLabel lblRemarks = new JLabel("Remarks: "); 
    JLabel lblEmpty1 = new JLabel(""); 
    JLabel lblEmpty2 = new JLabel(""); 

    txtEntryDate = new JTextField(10); 
    txtItemNo = new JTextField(10); 
    txtItemName = new JTextField(10); 
    txtUnitPrice = new JTextField(10); 
    txtQty = new JTextField(10); 
    txtTotalPrice = new JTextField(10); 
    txtSupplier = new JTextField(10); 
    txtRemarks = new JTextField(10); 

    JButton bttnAdd = new JButton("Save"); 
    JButton bttnCancel = new JButton("Save Added!"); 

    bttnAdd.addActionListener(this); 
    bttnCancel.addActionListener(this); 

    JPanel centerPane = new JPanel(); 
    JPanel bottomPane = new JPanel(); 

    centerPane.add(lblEntryDate); 
    centerPane.add(txtEntryDate); 
    centerPane.add(lblItemNo); 
    centerPane.add(txtItemNo); 
    centerPane.add(lblItemName); 
    centerPane.add(txtItemName); 
    centerPane.add(lblUnitPrice); 
    centerPane.add(txtUnitPrice); 
    centerPane.add(lblQty); 
    centerPane.add(txtQty); 
    centerPane.add(lblTotalPrice); 
    centerPane.add(txtTotalPrice); 
    centerPane.add(lblSupplier); 
    centerPane.add(txtSupplier); 
    centerPane.add(lblRemarks); 
    centerPane.add(txtRemarks); 
    bottomPane.add(bttnAdd); 
    bottomPane.add(bttnCancel); 
    centerPane.setLayout(new GridLayout(0, 2)); 

    newFrame.getContentPane().add(centerPane, BorderLayout.CENTER); 

    newFrame.getContentPane().add(bottomPane, BorderLayout.SOUTH); 
    newFrame.setLocation(screenWidth/4, screenHeight/4); 
    newFrame.show(); 

} 

public void addNewItem() { 
    addItemFrame(); 
    entryDate = txtEntryDate.getText(); 
    itemNo = Integer.parseInt(txtItemNo.getText()); 
    itemName = txtItemName.getText(); 
    unitPrice = Double.parseDouble(txtUnitPrice.getText()); 
    qty = Double.parseDouble(txtQty.getText()); 
    totalPrice = unitPrice * qty; 
    supplier = txtSupplier.getText(); 
    remarks = txtRemarks.getText(); 

    if (itemName.equals("")) { 
     JOptionPane.showMessageDialog(null, "Please enter Item name."); 
    } 
    if (txtUnitPrice.getText() == "") { 
     JOptionPane.showMessageDialog(null, 
       "Please enter UnitPrice for the item"); 
    } 
    if (txtQty.getText() == "") { 
     JOptionPane.showMessageDialog(null, 
       "Please enter Quantity of item to be added"); 
    } else { 

     Items item = new Items(entryDate, itemNo, itemName, unitPrice, qty, 
       totalPrice, supplier, remarks); 
     stockManagerDAO.addNewItem(item); 
     JOptionPane.showMessageDialog(null, "Person Saved"); 
    } 
} 

} 

Items.java

public class Items 
{ 
    String entryDate; 
    int itemNo; 
    String itemName; 
    double unitPrice; 
    double qty; 
    double totalPrice; 
    String supplier; 
    String remarks; 

    // default constructor 
    public Items() 
    {  
    entryDate ="" ; 
    itemNo = 0; 
    itemName=""; 
    unitPrice=0; 
    qty=0; 
    totalPrice=0; 
    supplier=""; 
    remarks=""; 
    } 

public Items(String entryDate,int itemNo,String itemName,double unitPrice,double qty,double totalPrice,String supplier,String remarks) 
{ 
    this.entryDate = entryDate; 
    this.itemNo = itemNo; 
    this.itemName = itemName; 
    this.unitPrice = unitPrice; 
    this.qty =qty; 
    this.totalPrice=totalPrice; 
    this.supplier=supplier; 
    this.remarks=remarks; 
} 
//getter and setter methods 
    } 

StockManagerDAO.java

package org.bil.service; 

import java.awt.BorderLayout; 
import java.awt.Dimension; 
import java.awt.GridLayout; 
import java.awt.Image; 
import java.awt.Toolkit; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.ObjectInputStream; 
import java.io.ObjectOutputStream; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.util.ArrayList; 
import java.util.Vector; 

import javax.swing.ButtonGroup; 
import javax.swing.DefaultListModel; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JList; 
import javax.swing.JOptionPane; 
import javax.swing.JPanel; 
import javax.swing.JRadioButton; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 
import javax.swing.JTextArea; 
import javax.swing.JTextField; 
import javax.swing.ListSelectionModel; 
import javax.swing.event.ListSelectionEvent; 
import javax.swing.event.ListSelectionListener; 

import org.res.bil.PersonInfo; 



class StockManagerDAO 
{ 
private ArrayList itemList; 
private String userid = "root"; 
private String password = "sa"; 
static String url = "jdbc:mysql://localhost/test";; 
private Connection con; 

public void StockManagerDAO() 
{ 
    itemList = new ArrayList(); 
    getConnection();  //Create Connection to the Oracle Database 
} 

public Connection getConnection(){ 

    try { 
     Class.forName("com.mysql.jdbc.Driver"); 

    } catch(java.lang.ClassNotFoundException e) { 
     System.err.print("ClassNotFoundException: "); 
     System.err.println(e.getMessage()); 
    } 

    try { 
     con = DriverManager.getConnection(url, userid, password); 
    } catch(SQLException ex) { 
     System.err.println("SQLException: " + ex.getMessage()); 
    } 

    return con; 
} 

/*public ArrayList searchItem(String name) 
{ 
    try { 
     String sql = "SELECT * FROM Item WHERE name like '%"+name+"%'"; 

     // Create a prepared statement 
     Statement s = con.createStatement(); 

     ResultSet rs = s.executeQuery(sql); 

     String itemname = ""; 
     String itemno = ""; 
     ........ 

     while(rs.next()) 
     { 
      id = rs.getInt("id"); 
      pname = rs.getString("name"); 
      address = rs.getString("address"); 
      phone = rs.getInt("phone"); 
      email = rs.getString("email"); 

      //Create a Item object 
      PersonInfo person = new PersonInfo(id, pname, address, phone, email); 

      //Add the person object to array list 
      personsList.add(person); 
     } 
    } 
    catch(Exception e){ 
     System.out.println(e); 
    } 

    return personsList; 
} 
*/ 
public void addNewItem(Items item) { 

    try 
    { 

     String sql = "INSERT INTO stock(ItemNo ,ItemEntryDate, ItemName, ItemUnitPrice, ItemQty, ItemTotalPrice,ItemSupplier, ItemRemarks) VALUES (?,?,?,?,?,?,?,?) "; 

     // Create a Preparedstatement 
     PreparedStatement ps = con.prepareStatement(sql); 

     ps.setInt(1,item.getItemNo()); 
     ps.setString(2, item.getEntryDate()); 
     ps.setString(3, item.getItemName()); 
     ps.setDouble(4, item.getUnitPrice()); 
     ps.setDouble(5, item.getQty()); 
     ps.setDouble(6, item.getTotalPrice()); 
     ps.setString(7, item.getSupplier()); 
     ps.setString(8, item.getRemarks()); 

     ps.executeUpdate(); 
    } 
    catch(Exception e){ 
     System.out.println(e); 
    } 
// TODO Auto-generated method stub 

} 

} 

..Please幫我...

回答

1

它看起來像你正試圖在StockManager.addNewItem()解析一個空字符串("")作爲一個整數(Integer.parseInt(txtItemNo.getText()) )。

您將需要確保txtItemNo的內容不爲空,或者更好的是在解析無效字符串時捕獲NumberFormatException

1

這意味着你的txtItemNo沒有文本,檢查它,你分析它,當它是無效的顯示錯誤之前(或捕獲異常,並在catch塊顯示錯誤)

相關問題