Добавление графического интерфейса в мое приложение - PullRequest
1 голос
/ 23 февраля 2012

У меня есть это библиотечное приложение, которое имеет несколько различных методов в своем классе контроллера. Один из них называется checkOut, который используется для извлечения элементов библиотеки.

Я пытаюсь сделать это, когда теперь нажата кнопка «оформить заказ», и надеюсь, что она сможет получить всю необходимую информацию из созданных мною текстовых полей.

Я сделал следующее, и это просто взрывается красными ошибками везде, когда я нажимаю «оформить заказ» во время работы. Любая помощь приветствуется, спасибо!

if (source == checkoutButton)
    {
        /*JDialog checkout = new JDialog(checkoutContent, "Checkout", true);
        JPanel panel = new JPanel();
        checkout.setBounds(750, 300, 350, 190);
        checkout.setResizable(false);
        checkout.add(panel);
        checkout.setVisible(true);*/

        String borrowerID = userIDTxtField.getText();
        String code = itemIDField.getText();
        String date = dateField.getText();
        String copyString = code.substring(1);
        int copy=Integer.valueOf(copyString);

if (ctrl.checkBorrower(borrowerID))
            {

        boolean valid = false;
        SimpleDateFormat sdf1= new SimpleDateFormat("M/dd/yyyy");
        sdf1.setLenient(false);

                   while (!valid)
                   {

                   try
                   {
                       sdf1.parse(date);
                       catalogArea.setText(ctrl.checkOut(borrowerID, code, copy, date));
                       valid = true;

                   }
                   catch (Exception e)
                   {
                       catalogArea.setText("Date is not valid. Please try again.");
                       continue;
                   }

                   }
            }
            else
            {
                catalogArea.setText("Sorry Invalid ID");
            }

    }

1 Ответ

4 голосов
/ 23 февраля 2012
while (!valid)
{
try
{
   sdf1.parse(date);
   catalogArea.setText(ctrl.checkOut(borrowerID, code, copy, date));
   valid = true;
}
catch (Exception e)
{
   catalogArea.setText("Date is not valid. Please try again.");
   continue;
}
}

Этот код вызовет практически бесконечный цикл, если дата недействительна.Скорее всего, GUI будет заблокирован (если это происходит в EDT - если не в EDT, обновления GUI являются неправильными), так что пользователю будет запрещено изменять недопустимую дату, которая вызывает цикл.


Чтобы решить эту проблему, я посмотрю на 1-й изменяющийся код, не показанный в цикле.По сути, dateField (предположительно JTextField) должен быть JSpinner.

SpinnerDemo

См. Как использовать счетчики в учебном пособиидля этого снимка экрана, рабочего кода и других советов.

Если текстовое поле было вместо счетчика, то все махинации проверки становятся избыточными.Спиннер предоставит действительную (но не обязательно правильную - требуется User Intelligence API) дату.

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