سؤال

في GXT وأساليب MessageBox هي غير متزامن، وهذا يعني أن التطبيق لا "حبس" في حين يتم عرض مربع الرسالة.

وأنا باستخدام KeyListener لمعالجة إدخال الضغط على مفتاح في شكل (لزيادة سهولة الاستخدام، أي السماح للشكل الواجب تقديمها من قبل إدخال المفتاح)، وبالتالي تعطيل حقول النموذج في حين أن تطبيق عمليات أوراق اعتماد المستخدم. إذا كانت غير صحيحة، وأنا تظهر MessageBox.alert() ومن ثم إعادة تمكين حقول النموذج. ومع ذلك، منذ alert() يعود فورا، يتم إجراء حقول النموذج يتسن على الفور الاتصال مرة أخرى، مما يتيح للمستخدم إدخال البيانات دون إغلاق التنبيه.

والحل هو استخدام الاستدعاء alert(). ومع ذلك، فإن إدخال بضغطة لا يتسبب فقط في شكل تقديم، ولكن أيضا يؤدي في حالة تأهب لرفض على الفور (كما لو شكل ومربع الرسالة ومعالجة وإدخال مفتاح). كيف أحافظ على مربع التنبيه مفتوحة حتى تدخل يضغط المستخدم للمرة الثانية أو ينقر على زر "موافق"؟

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

المحلول

والمفتاح هو DeferredCommand التي تقدمها <لأ href = "http://google-web-toolkit.googlecode.com/svn/javadoc/1.5/index.html؟com/google/gwt/user/client/DeferredCommand. أتش تي أم أل "يختلط =" نوفولو noreferrer "> GWT :

<اقتباس فقرة>   

وهذه الفئة تسمح لك لتنفيذ التعليمات البرمجية بعد قد أكملت كافة المعلقة حاليا معالجات الأحداث، وذلك باستخدام addCommand(Command) أو addCommand(IncrementalCommand) الأساليب. وهذا مفيد عندما تحتاج إلى تنفيذ التعليمات البرمجية خارج سياق من المكدس الحالي.

if(!validate())
{
    DeferredCommand.addCommand(new Command() {
        public void execute() {
            MessageBox.alert("Error", "You must enter a username and password.", alertListener);
            return;
        }
    });
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top