У меня проблемы с удалением выбранного элемента в моем графическом интерфейсе

У меня есть отдельный класс для элементов и класс Inventory_MP для графического интерфейса. Моя задача здесь состоит в том, чтобы удалить элемент, введенный пользователем, и позволить ему показать в интерфейсе, что он был удален. По какой-то причине я не могу удалить это. Ошибка говорит:

Исключение в потоке "AWT-EventQueue-0" java.lang.NumberFormatException: для входной строки: " 2" в 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 ответа

По словам ekcrisp, ошибка связана с delqty который содержит ' ' и так нельзя разбирать int,

Вы можете сделать некоторую предварительную обработку на delqty, Например delqty = delqty.replace(' ', '') должен сделать трюк в вашем случае, однако я полагаю, qtyField это JTextField так что пользователь может написать что угодно. Вам понадобится много предварительной обработки delqty или умный пользователь =)

Другое решение должно заключаться в использовании хорошего компонента Swing, JSlider или JSpinner может быть более подходящим.

Ваша ошибка возникает при вызове Integer.parseInt, это происходит из-за пробела в начале входной строки " 2".

String delqty = qtyField.getText();

qtyField.getText(); возвращает строку с пробелом. Если вы удалите пробел в qtyField, это исправит эту ошибку, в вашем коде могут быть и другие ошибки, но вызов Integer.parseInt будет работать нормально.

Другие вопросы по тегам