جافا ملزمة JTextField -> مشكلة java.lang.Integer
سؤال
ولدي حقل النص الذي لا بد مع متغير عدد صحيح، لذلك عندما يدخل المستخدم الرقم في هذا المجال، وآلية ملزمة تلقائيا تحويل النص إلى عدد صحيح ومجموعات هذه القيمة إلى فار. المشكلة هي، منذ المستخدم بكتابة النص في حقل النص، أن آلية الربط وتحويل القيم فقط، وإذا المستخدم بكتابة بعض الحروف في ذلك، ملزمة لن تفعيل لأنه لا يوجد قيمة قانونية داخل حقل النص. ما أود أن الحاجة في مثل هذه الحالة، ملزم أن يؤدي التغيير مع قيمة فارغة، لذلك لدي لاغيا في بلدي صحيح فار.
وهكذا، إذا كان المستخدم أن ترك هذا الحقل فارغا أو شيء غير العدد، سيكون لديك لتحريك نشر قيمة لاغية ملزمة. عدم تجاهل الحدث ... كيف يمكن أن أفعل ذلك دون propgramming الأحداث على حقل النص؟
هل جافا ملزم قادر على تغيير السلوك الافتراضي الخاص به؟
المحلول
وإلى جانب تغيير السلوك لآلية ملزمة، هل يمكن وضع المنسق في الحقل النصي الذي لا يقبل إلا الأرقام. كنت بحاجة لتمديد javax.swing.text.DefaultFormatter لهذا الغرض. ويمكنك بعد ذلك استخدام JFormattedTextField بدلا من JTextField العادي.
والنتيجة ستكون أن تحصل فقط على إدخال صالح في حيز النص الخاص بك وأنت ليس لديك لجعل أي شيء خارج عن قيم غير صحيحة.
نصائح أخرى
وما تحتاجه هو JFormattedTextField و> NumberFormat .
والدعم سوينغ لإدخال النص مقيدة مروع. سوف JFormattedTextField
تعطيك تجربة المستخدم بائسة تماما. كما هو الحال مع معظم العمل مراجيح للاهتمام، وتجاهل JComponent
والذهاب لهذا النموذج. في هذه الحالة Document
، في DocumentFilter
وجه الخصوص.
وكما يحدث لدي تطبيق سوينغ بسيط يستخدم حقول النص مقيدة إلى أعداد صحيحة أنني أعدت في وقت سابق. الوصف. <لأ href = "http://www.jroller.com/tackline /resource/PayCalculator.java "يختلط =" نوفولو noreferrer "> المصدر (وعلى وجه الخصوص createNumberDocument
انظر).