Java JTable, defaultTableModel хочу addRow - PullRequest
0 голосов
/ 26 мая 2011

Я пытаюсь добавить строку в JTable следующим образом

DefaultTableModel model = new DefaultTableModel();
            try {
                Builder builder = new Builder();
                Document doc = builder.build(Config.PATH +"incasation.xml");

                Element root = doc.getRootElement();    
                Elements childs = root.getChildElements("locations");

                model.addColumn("Name");
                model.addColumn("Total");
                model.addColumn("Location fee");
                model.addColumn("Bank");
                model.addColumn("Tax");

                float baseSum = 0;
                float locationSum = 0;
                float bankSum = 0;
                float taxSum = 0;

                for(int i=0; i< childs.size(); i++)
                {
                    Element child = childs.get(i);

                    model.addRow(new Object[] {
                        child.getFirstChildElement("name").getValue(),
                        child.getFirstChildElement("base").getValue(),
                        child.getFirstChildElement("locationfee").getValue(),
                        child.getFirstChildElement("bank").getValue(),
                        child.getFirstChildElement("tax").getValue()
                    });


                    baseSum += Float.parseFloat(child.getFirstChildElement("base").getValue());

                    locationSum += Float.parseFloat(child.getFirstChildElement("locationfee").getValue());
                    bankSum += Float.parseFloat(child.getFirstChildElement("bank").getValue());
                    taxSum += Float.parseFloat(child.getFirstChildElement("tax").getValue());

                }


                model.addRow(new Object[] {
                    "SUM",
                    Float.toString(baseSum),
                    Float.toString(locationSum),
                    Float.toString(bankSum),
                    Float.toString(taxSum)
                });

            }
            catch(Exception e){}

, и в этом случае JTable получает только первый ряд, поэтому я попытался вот так

DefaultTableModel model = new DefaultTableModel();
            try {
                Builder builder = new Builder();
                Document doc = builder.build(Config.PATH +"incasation.xml");

                Element root = doc.getRootElement();    
                Elements childs = root.getChildElements("locations");

                model.addColumn("Name");
                model.addColumn("Total");
                model.addColumn("Location fee");
                model.addColumn("Bank");
                model.addColumn("Tax");

                float baseSum = 0;
                float locationSum = 0;
                float bankSum = 0;
                float taxSum = 0;

                for(int i=0; i< childs.size(); i++)
                {
                    Element child = childs.get(i);

                    model.addRow(new Object[] {
                        child.getFirstChildElement("name").getValue(),
                        child.getFirstChildElement("base").getValue(),
                        child.getFirstChildElement("locationfee").getValue(),
                        child.getFirstChildElement("bank").getValue(),
                        child.getFirstChildElement("tax").getValue()
                    });

                }

                for(int j=0; j< childs.size(); j++)
                {
                    Element child = childs.get(j);

                    baseSum += Float.parseFloat(child.getFirstChildElement("base").getValue());         
                    locationSum += Float.parseFloat(child.getFirstChildElement("locationfee").getValue());
                    bankSum += Float.parseFloat(child.getFirstChildElement("bank").getValue());
                    taxSum += Float.parseFloat(child.getFirstChildElement("tax").getValue());
                }

                model.addRow(new Object[] {
                    "SUM",
                    Float.toString(baseSum),
                    Float.toString(locationSum),
                    Float.toString(bankSum),
                    Float.toString(taxSum)
                });

            }
            catch(Exception e){}

Я этоЕсли последняя строка не добавлена.Как решить эту проблему?

РЕДАКТИРОВАТЬ Я нашел решение, одно из значений было пустой строкой, поэтому не было суммы.Это должно быть похоже на

String base = child.getFirstChildElement("base").getValue();
baseSum += Float.parseFloat(base.equals("") ? "0" : base);  

1 Ответ

2 голосов
/ 26 мая 2011

Вы отредактировали вопрос с помощью решения.Однако решение не было очевидным, потому что было сгенерировано исключение, которое было поймано и проигнорировано.

Это прекрасный пример того, почему эта строка кода может быть проблематичной:предложить хотя бы сделать e.printStackTrace(), чтобы отладка в худшем случае была бы проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...