بعد تعلم أحداث جافا ، كتبت مفكرة بسيطة للغاية بنفسي. يتم استخدام Menubar ، Menu ، Menuitem وغيرها من عناصر التحكم ، وتشمل الأحداث ActionListener و KeyListener.
الرمز كما يلي:
حزمة com.package3 ؛ /** الوظيفة: تطوير بسيط من المفكرة ، يمكنك حفظ الملفات ، وفتح الملفات ، والخروج من المفكرة* المؤلف: ywq*/ import javax.swing.* ؛ استيراد java.awt.event.*؛ استيراد java.io.*؛ الطبقة العامة menutext {// تحديد المكونات: jframe f ؛ Menubar MB ؛ // Menu Menu Menu Mu ؛ // menu jtextarea jta ؛ Menuitem OpenItem ، SaveItem ، CloseItem ؛ // submenu filedialog opendia ، Saveia ؛ // ملف ملف حفظ وفتح شعبي. // constructor public menutext () {// استدعاء وظيفة التهيئة init () ؛ } // تهيئة المكون public void init () {f = new JFrame ("Simple Notepad") ؛ mb = new menubar () ؛ MU = قائمة جديدة ("ملف") ؛ OpenItem = new menuitem ("Open") ؛ SaveItem = new menuitem ("Save") ؛ CloseItem = new menuitem ("Exit") ؛ JTA = New JTextarea () ؛ F.Add (JTA) ؛ // إضافة mu.add (OpenItem) ؛ mu.add (SaveItem) ؛ mu.add (CloseItem) ؛ MB.Add (MU) ؛ F.SetMenubar (MB) ؛ opendia = filedialog new (f ، "open" ، filedialog.load) ؛ SaveAdia = FileDialog جديد (F ، "Save" ، FileDialog.save) ؛ // Set JFrame Attribute F.SetBounds (200 ، 300 ، 500 ، 400) ؛ f.setDefaultCloseOperation (jframe.exit_on_close) ؛ F.SetVisible (صحيح) ؛ // call event function event () ؛ } // وظيفة الحدث للتعامل مع الأحداث public void event () {// Open OptionItem.AddActionListener (new ActionListener () {Override public void ActionPerformed (ActionEvent e) {// call openfile () ؛}}) ؛ . // أضف حدثًا في منطقة النص ، أي ، اضغط على ctrl+s لحفظه // لأن هناك العديد من الطرق للاستماع للأحداث على لوحة المفاتيح ، ونحن بحاجة فقط إلى واحد منها ، يمكننا استخدام المحول keyadapter ، // e.getKeyCode () == keyevent.vk_s) // أغلق Option leaTiTem.AddActionListener (new ActionListener () {Override public void actionperformed (ActionEvent e) {// exit system system.exit (0) ؛}}) ؛ } // طريقة فتح النص public void openfile () {opendia.setVisible (true) ؛ // قم بتعيينه لعرضه // الحصول على مسار وملف اسم سلسلة dirpath = opendia.getDirectory () ؛ اسم ملف السلسلة = opendia.getFile () ؛ // منع النقرات لإلغاء الأخطاء إذا (dirpath == null || filename == null) return ؛ jta.settext ("") ؛ // قم بمسح ملف منطقة النص = ملف جديد (DirPath ، اسم الملف) ؛ // قم بإنشاء كائن ملف // اقرأ البيانات وفقًا للخط وعرضها في منطقة النص ، حاول {bufferedReader BR = جديد Bufferreader (New FileReader (file)) ؛ خط السلسلة = فارغ ؛ بينما ((line = br.readline ())! = null) {jta.append (line+"/r/n") ؛ } br.close () ؛ } catch (ioException ex) {رمي new runTimeException ("read fans") ؛ }} // طريقة لحفظ النص. public void savefile () {// أولاً حدد ما إذا كان الملف موجودًا إذا (ملف == null) {saveedia.setVisible (true) ؛ String dirPath = Saveedia.getDirectory () ؛ اسم ملف السلسلة = saveedia.getFile () ؛ // منع النقرات لإلغاء الأخطاء إذا (dirpath == null || filename == null) return ؛ // لأن الملف غير موجود. لذلك تحتاج إلى إنشاء ملف كائن ملف = ملف جديد (DirPath ، اسم الملف) ؛ } // كتابة البيانات إلى ملف try {bufferedWriter bw = new BufferedWriter (new filewRiter (file)) ؛ معلومات السلسلة = jta.getText () ؛ // الحصول على معلومات منطقة النص bw.write (info) ؛ // كتابة عملية bw.flush () ؛ bw.close () ؛ } catch (ioException e1) {ream new RunTimeException () ؛ }} public static void main (string [] args) {// إنشاء الكائن menutext () ؛ }}}تظهر نتائج التشغيل في الشكل:
الوظائف التي تنفذها هذا البرنامج هي:
(1) يمكن فتح ملف وتحريره.
(2) يمكنك حفظ الملف المعدل.
(3) يمكنك استخدام CTRL+S لحفظ النص
(4) يمكنك النقر فوق CloseItem للخروج من البرنامج.
عند تطبيق الوظيفة 3 ، تتم إضافة قائمة مفاتيح إلى منطقة النص ، ويتم استخدام محول KeyAdapter لتنفيذ الاستماع. ولكن الآن عندما تحتاج إلى مجموعة من الاستماع ، أي أن عملية حفظ سيتم تشغيلها عند الضغط على كل من CTRL و S.
فيما يتعلق بالاستماع المشترك ، يوفر Java API الطرق المقابلة.
ابحث عن فئة الوالدين المباشرة لفئة KeyEvent ، وهي فئة Inputevent. كما هو مبين في الشكل:
تحقق من الأساليب في فئة inputevent على النحو التالي:
باعتبارها فئة فرعية لفئة inputevent ، يمكن استدعاء كائن فئة KeyEvent مباشرة إلى الطريقة أعلاه لإصدار الأحكام. يتم استخدام طريقة ISControldown () لتحديد ما إذا كان مفتاح CTRL مضغوطًا أم لا. على سبيل المثال ، if (eiscontroldown () && e.getKeyCode () == keyevent.vk_s) في البرنامج يدرك الحكم المركب.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.