GXT KeyListener.componentKeyDown () يغلق على الفور MessageBox.alert ()
-
22-08-2019 - |
سؤال
في 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;
}
});
}