在我的应用程序中添加GUI

时间:2012-02-23 07:12:24

标签: java swing user-interface date button

我有这个库应用程序在其控制器类中有几个不同的方法。其中一个名为checkOut,用于结帐库项目。

我正试图在现在按下“结账”按钮时发生这种情况,并希望它能从我创建的txt字段中获取所有必要的信息。

我做了以下操作,当我在跑步时按“结帐”时,到处都是红色错误。感谢任何帮助,谢谢!

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 个答案:

答案 0 :(得分:4)

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更新不正确),因此将阻止用户更改导致循环的无效日期。


为了解决这个问题,我期待第一个更改代码未在循环中显示。基本上,dateField(可能是JTextField)应该是JSpinner

SpinnerDemo

请参阅教程中的How to Use Spinners,了解该截屏,工作代码和其他提示。

如果文本字段是一个微调器,那么整个验证过程就变得多余了。微调器将提供有效(但不一定正确 - 需要用户智能API)的日期。