input - is it possible to get key presses from the console in java? -
संभव डुप्लिकेट:
मैं कंसोल के लिए एक रोगू बना रहा हूं, लेकिन क्या कीस्ट्रोक्स मिलना संभव है जैसे कि वह टाइप किया जाता है?
* संपादित करें मैंने पाया जेलाइन, क्या यह काम कर सकता है? और यदि ऐसा है तो कैसे?
नहीं, आप कंसोल से कम्प्रेशर्स प्राप्त नहीं कर सकते क्योंकि कंसोल सिस्टम पर निर्भर है और पर्यावरण से परिवेश में परिवर्तन और चलाने के लिए चलाने से, आपके पास एक कंसोल जावा में लिखा जाता है, एक पर्ल में लिखा हुआ है, और एक सी ++ में लिखा है, यह इस बात पर निर्भर करता है कि आप किस प्रोग्राम को खोलते हैं आपके पास एक अदृश्य कंसोल भी हो सकता है (आप डबल JAR फ़ाइल पर क्लिक करें)।
सौभाग्य से, आप अपना स्वयं का कंसोल लिख सकते हैं ऐसा करना काफी सरल है।
यहां एक नमूना है जो मैंने हाल ही में लिखा था:
आयात करें java.awt.BorderLayout; आयात करें java.awt.event.KeyEvent; आयात करें java.awt.event.KeyListener; आयात करें java.util.ArrayList; आयात javax.swing.JFrame; आयात javax.swing.JTextArea; आयात javax.swing.JTextField; सार्वजनिक कक्षा इनपुट जेफ्रेम लागू करता है KeyListener {निजी JTextArea बाहर; निजी JTextField में; सार्वजनिक इनपुट () {बाहर = नया JTextArea (); = नए JTextField () में; This.add (बाहर, BorderLayout.CENTER); This.add (में, बॉर्डर लेआउट। दक्षिण); in.addKeyListener (this); } सार्वजनिक शून्य कुंजी दबाया (keyEvent ई) {} सार्वजनिक शून्य कुंजी रिलेटेड (KeyEvent ई) {} सार्वजनिक शून्य कुंजी टाइप (keyEvent ई) {if (e.getKeyChar () == (int) '\ n') {e.consume () ; प्रक्रिया (in.getText ()); in.setText ( ""); }} सार्वजनिक शून्य प्रक्रिया (स्ट्रिंग्स) {स्ट्रिंग टेक्स्ट = आउट.गेट टेक्स्ट (); Out.setText (पाठ + ((text.length () == 0)? "": "\ N") + s); स्ट्रिंग क्वेरी = s.substring (0, s.indexOf ('')); स्ट्रिंग परम = s.substring (s.indexOf ('') + 1); ArrayList & LT; स्ट्रिंग & gt; आर्ग्स = नए अर्रेलिस्ट & lt; स्ट्रिंग & gt; (); Int i = 0; बूलीयन inQuotes = false; स्ट्रिंगबफ़र सक्रिय स्ट्रिंग = नया स्ट्रिंगबफर (); जबकि (i & lt; param.length ()) {if (param.charAt (i) == '' & amp;; inQuotes) {args.add (activeString.toString ()); Println (activeString.toString ()); activeString.setLength (0); // FIXME: काम करता है ??? } और अगर (param.charAt (i) == '' ') {inQuotes =! InQuotes;} और {activeString.append (param.charAt (i));} i ++;} args.add (activeString.toString () ); System.out.println (activeString.toString ()); activeString.setLength (0); // FIXME: स्ट्रिंग स्ट्रिंग: आर्ग्स के लिए कार्य करता है {activeString.append (स्ट्रिंग + ",");} Out.setText (out.getText () + "\ n \ t" + "क्वेरी:" + क्वेरी + "; आर्ग्स:" + सक्रिय स्टिंग.स्टोस्टिंग ());} सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] आर्ग्स) {इनपुट X = नया इनपुट (); x.setVisible (true); x.setDefaultCloseOperation (EXIT_ON_CLOSE);}} असल में, बॉर्डर लेआउट पर टेक्स्ट एरिया बॉर्डर लेआउट पर एक पाठ क्षेत्र बनाओ। .सीएसीएंड और टेक्स्ट फ़ील्ड में एक कुंजीलिस्टर जोड़ें। फिर आप कंसोल से कम्प्रेशर्स पढ़ने में सक्षम होंगे। आप कंसोल के बिना भी आवेदन लॉन्च करने में सक्षम होंगे (जैसे इसे जार फ़ाइल में डालकर इसे खोलकर इसे खोलें )
टीएल; डीआर: नहीं, लेकिन आप अपना खुद का बना सकते हैं और इसका इस्तेमाल कर सकते हैं: डी
शुभकामनाएँ!
Comments
Post a Comment