جافا مدخلات لوحة المفاتيح تحليل في التطبيق وحدة التحكم

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

  •  03-07-2019
  •  | 
  •  

سؤال

ولقد بدأت للتو تعبث مع JLine لتحليل إدخال حرف في وضع وحدة التحكم. ويبدو أن تعمل بشكل جيد، ولكن أنا أتساءل:

هل هناك طريقة توصيل nonblocking في JLine لمعرفة إذا كانت الأحرف المتاحة؟ (أي مثل kbhit() في نظام التشغيل Windows.)

وأعتقد أنني يمكن التفاف دائما مدخلات لوحة المفاتيح في موضوع خاص بها والتي ثم يقدم أحرف لوحة المفاتيح في طابور ذات ألوان للموضوع الرئيسي، ولكن الذي يبدو أنه ينبغي أن يكون لا لزوم له.

تعديل : في هذا الطابع من قبل حرف التوزيع. أنا لا تنوي استخدام واجهة المستخدم الرسومية. وInputStream المعتاد I / O في جاوة في وضع وحدة التحكم يتطلب منك اضغط على مفتاح Enter الأول (على سبيل المثال انها مخزنة المدخلات فقط). من فضلك لا تقل لي حرف من حرف الإدخال في وضع وحدة التحكم مستحيل في جاوة. الأمر ليس كذلك. JLine يفعل ذلك باستخدام واجهة المحمولة مع تنفيذ التي تعتمد على منصة.

<القوي> تحديث تحرير : لوكنت قادرا على الإختراق معا فئة المساعد للقيام منع I / O في ترابط عامل (باستخدام JLine لI / O، تحذير لكل شخصية: لديك ل تحليل على Ctrl-C نفسك!) وبعد ذلك التواصل عبر طابور متزامنة مع روتين isempty (). لما أفعله الآن هذا شيء طيب، ولكن أود حقا أن تعرف وسيلة جيدة للقيام بذلك في المستقبل.

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

المحلول

ويبدو أنك على الطريق الصحيح.

وأعتقد أن "الحق" وسيلة لتحقيق ذلك هي مؤشر ترابط عامل أن يصب كل حجب I / O في قائمة انتظار غير مؤمن. هافا نظرة على ConcurrentLinkedQueue java.util. المتزامنة.

نصائح أخرى

ولا يمكنك استخدام وحدة تحكم للحصول على عدم عرقلة إدخال دون المكتبات المحلية.

وسيكون لديك لكتابة التطبيق سوينغ وكتابة <لأ href = "http://java.sun.com/javase/6/docs/api/java/awt/event/KeyListener.html" يختلط = "noreferrer نوفولو"> KeyListener

واقرأ هذا البرنامج التعليمي: http://java.sun.com/docs/books/ تعليمي / uiswing / الأحداث / keylistener.html

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