باستخدام محرر NetBeans GUI ، كيف يمكنني إنشاء حقل JTextField أو JFormattedText الذي يجب التحقق منه مقابل تعبير منتظم؟

StackOverflow https://stackoverflow.com/questions/1378978

سؤال

لدي تعبير منتظم (\d{4}\w{3}(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9]){2}) أنني بحاجة إلى التحقق من صحة إدخال حقل نص مقابل عندما ينقر المستخدم على الزر "موافق" أو ينقل المؤشر إلى حقل آخر. أنني أعرف كيف أفعل ، كتابة الرمز. ومع ذلك ، أنا مهتم بما إذا كان من الممكن أن يقوم محرر واجهة المستخدم الرسومية NetBeans ببعض الأعمال من أجلي ، خاصة وأنني أبتعد عن Eclipse وتجاه Netbeans كإيدي المفضل ، وأود أن أستفيد بالكامل من الأدوات التي توفرها.

هل كانت مفيدة؟

المحلول

افتح خصائص jtextfield الخاصة بك ، في علامة التبويب الخصائص ، ابحث عن inputVerifier. افتحه

الآن سيُطلب منك تقديم رمز InportVerifier.

ftf2.setInputVerifier(new InputVerifier() {
  public boolean verifyText(String textToVerify) {
     Pattern p = Pattern.compile("your regexp");
     Matcher m = p.matcher(textToVerify);
        if (m.matches()) {
        setComponentValue(textToVerify);
        return true;
    }
    else {
        return false;
    }

  }
});

لم أقم بتجميع هذا الرمز ، لذلك يمكن أن يحتوي على أخطاء. لكني أعتقد أنك تحصل على الفكرة ؛)

نصائح أخرى

هذا ليس الحل الأسهل ، لكنه قوي للغاية: حاول عميل الربيع الغني, ، حيث يمكن الوصول إلى التحقق عبر:

public class Validation extends DefaultRulesSource {

private Constraint NAME_VALIDATION = all(new Constraint[]{minLength(3), required()});

public void load() {
    addRules(new Rules(Person.class) {

        @Override
        protected void initRules() {
            add("name", NAME_VALIDATION);
        }
    });

...

ويتم إنشاء نموذج واجهة المستخدم الرسومية بسهولة عبر:

    TableFormBuilder formBuilder = getFormBuilder();
    formBuilder.add("firstName");
    formBuilder.add("name");
    formBuilder.row();

على سبيل المثال ، انظر هنا للتحقق أو هنا لمزيد من Infos. أنا أستخدم هذا بنجاح في بلدي مشروع مفتوح المصدر ...

وبهذه الطريقة ، يمكنك إنشاء مكون تأرجح أكثر عمومية يمكن إضافته إلى لوحة مكون NetBeans

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top