我在清单GUI中删除所选项目时遇到困难

时间:2014-04-15 09:27:56

标签: java user-interface jscrollpane

我有一个单独的Items类和一个GUI的Inventory_MP类。我的任务是删除用户键入的项目,并让它在界面中显示已被删除。出于某种原因,我无法将其删除。错误说:

线程中的异常" AWT-EventQueue-0" java.lang.NumberFormatException:对于输入字符串:" 2"     at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)     在java.lang.Integer.parseInt(Integer.java:481)     在java.lang.Integer.parseInt(Integer.java:527)

if(e.getSource() == remButton){ 
        String delitem = nameField.getText();
            String delnum = numField.getText();
                    String delqty = qtyField.getText();
                    String delprice = priceField.getText();
                    Items v = new Items(delitem, delnum, Integer.parseInt(delqty), Double.parseDouble(delprice)); 
                    removeItems(delitem, delnum, delqty,delprice); 

public void removeItems(String delitem, String delnum, String delqty, String delprice){ 


                         Items v = new Items(); 
            itemModel.removeElementAt(itemCollection.indexOf(delitem)); //removes element in the JList
                        itemnumModel.removeElementAt(itemCollection.indexOf(delnum));
            qtyModel.removeElementAt(itemCollection.indexOf(delqty)); 
                        priceModel.removeElementAt(itemCollection.indexOf(delprice));  

            itemCollection.remove(searchItems(delitem)); //removes element in the arrayList
                    itemText.setText(" ");
            numText.setText(" ");
                        qtyText.setText(" "); 
                        priceText.setText(" "); 
                        window.validate();
                        window.repaint();   


                }

2 个答案:

答案 0 :(得分:0)

您在Integer.parseInt调用中发生错误,这是因为输入字符串“2”前面的前导空格。

String delqty = qtyField.getText();

qtyField.getText();返回带有前导空格的字符串。如果删除qtyField中的空格,它将修复此错误,代码中可能仍有其他错误,但对Integer.parseInt的调用将正常工作。

答案 1 :(得分:0)

正如ekcrisp所说,错误是由于delqty包含' ',因此无法解析为int

您可以在delqty上进行一些预处理。例如,delqty = delqty.replace(' ', '')应该在您的情况下执行技巧,但我认为qtyFieldJTextField,因此用户可以编写任何内容。您需要在delqty或智能用户=)

上进行大量预处理

另一个解决方案应该是使用好的Swing组件,JSliderJSpinner可能更合适。