jCombobox дает ошибку инкрементного значения на jTable - PullRequest
0 голосов
/ 11 марта 2011

У меня проблемы с моим кодом ниже, код ниже показывает заполнение jComboBox, когда я выбираю элемент из этого списка, он добавляется в jTable под ним.

Есть код alos для проверкидля дубликатов записей на столе.Если найдена повторяющаяся запись, она должна увеличить столбец qty на единицу, а не создавать отдельную запись.

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

Я также включил код, который заполняет сведения о раунде в зависимости от раунда, выбранного из таблицы, для справки, но я уверен, что проблема заключается в следующем коде.Навигация выглядит следующим образом ...

Чтобы попасть на экран ниже ... Таблица круглых перетасовок круглой капли) >> щелкните строку таблицы и перейдите на соответствующую панель круглых сведений >>, нажав кнопку Tillвыводит пользователя на экран с кодом ниже ...

Результаты теста:

Первый проход по приведенному ниже коду с использованием навигации выше дает ожидаемые результаты

Второй проход дает начальное значение2 (вместо одного), и повторяющаяся строка увеличивает количество на 2 вместо одного

Третий проход дает начальное значение 3 (вместо одного), а повторяющаяся строка увеличивает количество на 3 вместо одного

Четвертый проход дает начальное значение 4 (вместо одного), а повторяющаяся строка увеличивает количество на 4 вместо одного

... и т. Д.

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

Спасибо

/ ************* Пример кода ******************************** / public void tillOperations (String sourceCall) {

    final DefaultTableModel model = (DefaultTableModel)main.tillPanel.tblTillSale.getModel();
    if (main.tillPanel.cmbTillProdSelect.getItemCount() < 1) {
        for (int d = 0; d < roundStockObj.length ; d++) {
            main.tillPanel.cmbTillProdSelect.addItem(roundStockObj[d].getDescription());
        }}
    main.tillPanel.tblTillSale.removeRowSelectionInterval(0, model.getRowCount() - 1);

    main.tillPanel.cmbTillProdSelect.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent f)
        {
            int qty = 1;
            for (int index = 0; index < 4; index++) {
                addSelectedItem[index] = "";
            }
            int row;
            selectedItem = null;
            main.tillPanel.tblTillSale.removeRowSelectionInterval(0, model.getRowCount() - 1);
            selectedItem = main.tillPanel.cmbTillProdSelect.getSelectedItem();

            for (int d = 0; d < roundStockObj.length; d++) {

                if (selectedItem.equals(roundStockObj[d].getDescription())) {    
                    addSelectedItem[0] = roundStockObj[d].getDescription();
                    addSelectedItem[1] = Integer.toString(qty);
                    addSelectedItem[2] = Double.toString(roundStockObj[d].getPrice()).trim();
                    addSelectedItem[3] = Double.toString(roundStockObj[d].getPrice()).trim();
                    //break;
                }
            }

            if(model.getRowCount() == 0) { //check if model is empty
                model.addRow(new String[]{addSelectedItem[0], addSelectedItem[1], addSelectedItem[2], addSelectedItem[3]});
            }
            else { //check if there is a duplicate row
                int duplicateRow = -1;
                for (row = 0 ; row < model.getRowCount(); row++) {
                    if(addSelectedItem[0].equals(main.tillPanel.tblTillSale.getModel().getValueAt(row,0))) {
                        duplicateRow = row;
                        break;
                    }
                }

                if(duplicateRow == -1) { //if there is no duplicate row, append
                    model.addRow(new String[]{addSelectedItem[0], addSelectedItem[1], addSelectedItem[2], addSelectedItem[3]});
                }
                else { //if there is a duplicate row, update
                    main.tillPanel.jLabel1.setText(addSelectedItem[1]);
                    DecimalFormat fmtObj = new DecimalFormat("####0.00");
                    int currentValue = Integer.parseInt(main.tillPanel.tblTillSale.getValueAt(row, 1).toString().trim());
                    int newValue = currentValue + 1;
                    Integer newValueInt = new Integer(newValue);
                    model.setValueAt(newValueInt, row, 1);

                    double unitPrice = Double.parseDouble(main.tillPanel.tblTillSale.getValueAt(row, 2).toString().trim());
                    double newPrice = newValue * unitPrice;
                    Double newPriceDbl = new Double(newPrice);
                    main.tillPanel.tblTillSale.setValueAt(fmtObj.format(newPriceDbl), row, 3);
                }
            }

            main.tillPanel.tblTillSale.removeRowSelectionInterval(0, model.getRowCount() - 1);
            for (int index = 0; index < 4; index++) {
                addSelectedItem[index] = "";
            }
        }
    });

// Этот код загружает конкретные сведения о раунде на основе формы выбора таблицы округления

public void displayRoundDropDetails() {
    DefaultTableModel model = (DefaultTableModel)main.selectRoundDropPanel.tblSelectRoundDrop.getModel();

    if (!loaded) {
    for (int d = 0; d < roundDropsData.length; d++) {
        if (roundDropsData[d][0].equals(defaultRoundID)) {
            model.addRow(new Object[]{roundDropsData[d][3], roundDropsData[d][2],
                    roundDropsData[d][4], roundDropsData[d][5]});
        }
    }
    loaded = true;
    }
    main.selectRoundDropPanel.tblSelectRoundDrop.addMouseListener(new MouseAdapter()
    {
        public void mouseClicked(MouseEvent evt)
        {
            int row = 0;
            row = main.selectRoundDropPanel.tblSelectRoundDrop.getSelectedRow();
            for (int index = 0; index < roundDropsData.length; index++) {
                if (roundDropsData[index][3].equals(
                        main.selectRoundDropPanel.tblSelectRoundDrop.getModel().getValueAt(row, 0))) {

                    main.roundDetailsPanel.txtRoundDetailsAddress.setText(roundDropsData[index][6] + "\n"
                            + roundDropsData[index][7] + ", " + roundDropsData[index][8] + "\n" +
                            roundDropsData[index][9]);

                    main.roundDetailsPanel.lblRoundDetailsName.setText(roundDropsData[index][2]);
                    main.roundDetailsPanel.txtRoundDetailsInstuct.setText(roundDropsData[index][10]);
                    main.roundDetailsPanel.txtDropDetailsIn.setText(roundDropsData[index][4]);
                    main.roundDetailsPanel.txtDropDetailsOut.setText(roundDropsData[index][5]);
                    main.roundDetailsPanel.txtRoundDetailsInstruct.setText(roundDropsData[index][12]);
                    break;
                }
            }
        Globals.CURRENT_COMPONENT = "selectRoundDropPanel";
        showRoundDetailsPanel();
        }
    });
}

1 Ответ

0 голосов
/ 11 марта 2011

Попробуйте изменить слушателя для JComboBox. попробуйте использовать stateChangeListener.

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