জাভা ব্যবহার করে কীভাবে ডেস্কটপ অ্যাপ্লিকেশন তৈরি করবেন

আমরা একটি সাধারণ ডেস্কটপ অ্যাপ্লিকেশন তৈরি করব যা ইংরেজী পাঠ্যটিকে মোর্স কোডে এবং এর বিপরীতে খুব সাধারণ পদক্ষেপে অনুবাদ করবে, পাশাপাশি জাভা জিইউআইয়ের একটি ওভারভিউ

আমাদের শেষ অ্যাপটি এটির মতো দেখাবে

এটি জাভা প্রোগ্রামিং ভাষার সাথে গ্রাফিকাল ইউজার ইন্টারফেসের (জিইউআই) বিশ্বের একটি পরিচিতি হবে। (স্বীকারোক্তি: আমি জাভার প্রেমে আছি)

অনুবাদ যুক্তি

গ্রাফিক্সের অংশটি দেখার আগে, আসুন ড্রাইভিং যুক্তিটি দেখুন।

হ্যাশম্যাপ (মানচিত্রের একটি সাবক্লাস, যা কী-মূল্যের স্টোর) ইংরেজি অক্ষর এবং সংশ্লিষ্ট মোর্স কোড সহ আমাদের অভিধান তৈরি করতে ব্যবহৃত হয়। সুতরাং আমাদের কাছে এরকম কিছু রয়েছে:

ব্যক্তিগত হ্যাশম্যাপ englishToMorseLib = নতুন হ্যাশম্যাপ <> ();
ইংলিশটোমর্সলিব.পুট ("এ", ".-"); englishToMorseLib.put ("বি", "-..."); ইংলিশটোমর্সলিব.পুট ("সি", "-.-।"); , , , , // আপনি নিবন্ধের শেষে গিথুবের সম্পূর্ণ উত্স কোডের একটি লিঙ্ক খুঁজে পেতে পারেন

তারপরে দুটি পদ্ধতি তৈরি করা হয়েছিল: একটি ইংরেজী পাঠ্যটিকে মোর্স কোডে অনুবাদ করতে এবং অন্যটি বিপরীতে করতে। উভয় ক্ষেত্রেই, পাঠাগুলি একটি নিয়মিত এক্সপ্রেশন ব্যবহার করে বিভক্ত হয় যা স্পেস এবং নতুন লাইনের অক্ষরের সাথে মেলে। ফলস্বরূপ প্রতিটি অ্যারে দক্ষতার কারণে জাভা স্ট্রিমগুলি দিয়ে প্রক্রিয়াজাত করা হয়

// এই পদ্ধতিটি ইংরেজী শব্দগুলিকে মোর্স কোড পাবলিক স্ট্রিং ইংরাজী ওয়ার্ডটোমর্স ওয়ার্ড (স্ট্রিং ইংলিশওয়ার্ড) -এ রূপান্তর করে {স্ট্রিংবুফার বাফার = নতুন স্ট্রিংবফার (); স্ট্রিম.ওফ (ইংলিশ ওয়ার্ড.স্প্লিট ("[\\ s \\ n]" ")) জন্য (প্রতিটি চার্জ: এস। টোচারআরে ()) {বাফার.এপেন্ড (ইংরিজিটোমর্স লাইবকন্টেনসকি (স্ট্রিং.ভ্যালুওফ ( c) .toUpperCase ())? englishToMorseLib.get (String.valueOf (c) .toUpperCase ()) + "": "??");} বাফার.এপেন্ড ("/");}); রিটার্ন বাফার.টো স্ট্রিং ();}
// এই পদ্ধতিটি মোর্স কোডটিকে ইংলিশ পাবলিক স্ট্রিং morseWordToEnglishWord (স্ট্রিং মোর্স ওয়ার্ড) এ রূপান্তর করে {স্ট্রিংবুফার বাফার = নতুন স্ট্রিংবফার (); স্ট্রিম.ওফ (মোর্স ওয়ার্ড.স্প্লিট ("[\\ s \\ n]")) ফিল্টার (গুলি) -> এস! = নাল &&! এসআইস্পেটি ()) .ফের জন্য (গুলি -> {যদি (গুলি)। equalsIgnoreCase ("/") || s.equalsIgnoreCase ("|")) {বাফার.এপেন্ড ("");} অন্য {বাফার.এপেন্ড ((morseToEnglishLib.containsKey (গুলি)? morseToEnglishLib.get (গুলি): "? ? ") .TLLoverCase ());}}); রিটার্ন বাফার.টো স্ট্রিং ();

জাভাতে জিইউআই উপাদানগুলি

জাভাতে বিভিন্ন GUI উপাদান রয়েছে যা সম্পূর্ণ জিইউআই ডেস্কটপ অ্যাপ্লিকেশনটির জন্য বিল্ডিং ব্লক হিসাবে কাজ করে।

JFrame

জাভা জিইউআইয়ের শীর্ষ স্তরটি হল জেফ্রেম। এটি বাইরেরতম ধারক যাতে অন্যান্য উপাদান বা পাত্রে থাকে। এটি ক্লোজ, মিনিমাইজ এবং ম্যাক্সিমাইজ বোতামগুলির সাহায্যে অ্যাপটির অংশ। নিম্নলিখিত কোডের লাইনগুলি একটি JFrame অবজেক্ট তৈরি করে (সাইড নোট: অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং জাভা এর সাথে তুলনীয়)।

// জেফ্রেম উদাহরণ জেফ্রেম ফ্রেম তৈরি করুন = নতুন জেফ্রেম ();
ফ্রেম.সেটিটেল ("মুনস কোড অনুবাদক সিউন ম্যাট (@ সিমনম্যাট 2)");
ফ্রেম.সেটলয়েট (নতুন বর্ডারলআউট ()); // জেফ্রেম ফ্রেম.এডডিতে (মেইনপ্যানেল, বর্ডারলআউটআউট.সেন্টার) আরও পাত্রে এবং উপাদান যুক্ত করুন; ফ্রেম.সেটসাইজ (নতুন মাত্রা (800, 650)); // যখন ক্লোজ বোতামটি ফ্রেমে ক্লিক করা হবে তখন এটি অ্যাপ্লিকেশনটি শেষ করে setsetDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); // এটি অ্যাপটিকে সর্বদা মাঝের ফ্রেমে দেখায় set সেটলোকেশনরিলেটিভটো (নাল); // ভাল, আমি চাই না আপনি উইন্ডো আকারের ফ্রেম পরিবর্তন করুন। সেটরিজেজেবল (মিথ্যা); // এবং হ্যাঁ, এটি দৃশ্যমান ফ্রেম / দৃশ্যমান অ্যাপ্লিকেশন ফ্রেমটি দেখায় setsetVisible (সত্য);

উপরের কোডটি মূলত JFrame অবজেক্টের একটি উদাহরণ তৈরি করে, যেমন ফ্রেমটিকে পুনরায় আকার দেওয়ার ক্ষমতা এবং এর দৃশ্যমানতার মতো শিরোনাম, বিন্যাস, আকার, অবস্থান এবং জেফ্রেমের আচরণের মতো পরামিতিগুলি সেট করে।

JPanel

এটি এমন একটি ধারক যা অন্যান্য উপাদানকে একত্রে ধারণ করে। অধস্তন উপাদানগুলি বিন্যাস ব্যবস্থাপকগুলি ব্যবহার করে একটি নির্দিষ্ট ক্রমে সজ্জিত করা হয়, কারণ আমরা পরে এটি আবিষ্কার করব। নীচের কোডের লাইনগুলি মুরস পাঠ্যের ক্ষেত্রের নীচে অ্যাপ্লিকেশনের ডানদিকে বোতাম লাইন তৈরি করার জন্য দায়ী।

জেপানেল মোর্সকন্ট্রোলপ্যানেল = নতুন জেপানেল (); // লেআউট স্টাইলকে মোর্সকন্ট্রোলপ্যানেল.সেটলয়আউট সেট করে (নতুন ফ্লোএলআউট (ফ্লোএলআউট.আরাইট)); // মোর্স যুক্ত করুন >> ইংলিশ বোতাম morseControlPanel.add (morseToEnglishBt); // প্লেটেক্সট যুক্ত করুন >> বোতাম morseControlPanel.add (ClearMorseText);

অ্যাপটিতে ব্যবহৃত অন্যান্য উপাদান

প্রোগ্রামে ব্যবহৃত অন্যান্য উপাদানগুলি হ'ল

  • জে বাটন: বিশেষ ক্রিয়া সম্পাদন করার জন্য ক্লিকযোগ্য বাটনগুলি। উদাহরণস্বরূপ, ইংরেজী পাঠ্যের নীচে সরল পাঠ্য বোতামটি নীচে তৈরি করা হয়েছে:
JButton ClearEnglishText = নতুন জেবাটন ("<< স্পষ্ট পাঠ্য");
  • জেবেল: আচ্ছা, নাম থেকে আমরা উপসংহারে আসতে পারি যে এটি একটি লেবেল এবং জিনিসগুলি সনাক্ত করতে লেবেলগুলি ব্যবহার করা হয়। ইংরেজী পাঠ্য অঞ্চলের শীর্ষে ইংরাজী পাঠ্য তৈরি করতে ব্যবহৃত কোডটি এখানে
জেএলবেল ইংলিশেক্সটেলবেল = নতুন জেএলবেল ("ইংরেজি পাঠ্য"); ইংরাজিটেক্সটেলবেল.সেট হরিজন্টাল এ্যালাইনমেন্ট (সুইংকনস্ট্যান্টস.সেন্টার);
  • JTextArea: এই উপাদানটি সেই ধারক যা আমরা পাঠ্যগুলিতে প্রবেশ করি। JTextArea মাল্টি-লাইন পাঠ্যের জন্য উদ্দিষ্ট। (দ্রষ্টব্য: এই উপাদানগুলি জাভা অবজেক্টস এবং তাই তাদের আচরণ এবং বৈশিষ্ট্যগুলি নির্দিষ্ট করা যেতে পারে al যেমন প্রান্তিককরণ, পাঠ্য, অবস্থান ইত্যাদি You আপনি এমনকি ইভেন্টগুলিকে তাদের সাথে আবদ্ধ করতে পারেন, যেমন আমরা পরে দেখব))
// অবজেক্ট দৃষ্টান্তটি তৈরি করুন JTextArea englishTextArea = নতুন JTextArea (20,20);
// অবজেক্টের বৈশিষ্ট্য এবং আচরণের সেট করুন ইংলিশেক্সটআরিয়া.সেটটেক্সট ("হ্যালো ওয়ার্ল্ড"); englishTextArea.setLineWrap (সত্য); ইংলিশেক্সটআরিয়া.সেটরেপ স্টাইল ওয়ার্ড (সত্য); ইংলিশেক্সটআরিয়া.সেটমার্গিন (নতুন ইনসেটস (5, 5, 5.5%));
  • লেআউট ম্যানেজার: লেআউট ম্যানেজাররা নির্ধারণ করে যে কীভাবে ধারকগুলিতে উপাদানগুলি সাজানো হয়। এই অ্যাপ্লিকেশনটিতে, আমরা উপাদানগুলির বিন্যাস নির্ধারণ করতে ফ্লোলআউট এবং বর্ডারলআউট ব্যবহার করি। ফ্লোলআউট উপাদানগুলি যাতে ধারক হিসাবে যুক্ত করা হয় সেটিকে এবং ক্রমে সেগুলি সাজায়। অন্যদিকে বর্ডারলাউট দক্ষিণ, উত্তর, পূর্ব, পশ্চিম এবং সেন্টার অনুসারে জিইউআই উপাদানগুলি সজ্জিত করে
// এই ফ্লো লেআউটে বোতামের সরল পাঠ্যটি প্রথম দেখানো হয়েছে // এর পরে ইংরাজী >> মুরস কী // এবং সেগুলি বামে জ্যাপানেল ইংলিশকন্ট্রোলপ্যানেল = নতুন জেপানেল (নতুন ফ্লোলায়আউট (ফ্লোলায়আউট.এলএফটি)) এর সাথে সংযুক্ত থাকে;
ইংলিশকন্ট্রোলপ্যানেল.এডিডি (ক্লিয়ারইংলিশটেক্সট);
ইংলিশকন্ট্রোলপ্যানেল.এডিডি (ইংলিশটোমর্সবিটি);
// এই ডিসপ্লেটি বর্ডারলআউট ম্যানেজার ব্যবহার করে // উপাদানগুলি তারা কোথায় থাকবে সে ইঙ্গিত সহ যুক্ত করা হয় জেপানেল ইংলিশেস্টপ্যানেল = নতুন জেপানেল ();
ইংলিশেক্সটপ্যানেল.সেটলআউট (নতুন বর্ডারলআউট ());
ইংলিশেক্সটপ্যানেল.এডডি (ইংলিশিক্সটেলবেল, বর্ডারলআউট.এনএনআরটি);
ইংলিশেক্সটপ্যানেল.এডডি (নতুন জেএসক্রোলপ্যান (ইংলিশিক্সটেক্সিয়া), বর্ডারলআউটআউট.সেন্টার);
ইংলিংটেক্সটপ্যানেল.এডিডি (ইংলিশকন্ট্রোলপ্যানেল, বর্ডারলআউটআউট। দক্ষিণ);

ইভেন্ট শ্রোতা

ইভেন্টগুলি জিইউআই উপাদানগুলিকে প্রাণবন্ত করে তোলে। সুতরাং আপনি যখন একটি বোতাম ক্লিক করেন, সিস্টেমে একটি ইভেন্ট উত্পন্ন হয় এবং সংশ্লিষ্ট ইভেন্টের জন্য নিবন্ধিত ইভেন্ট শ্রোতাদের ডেকে আনা হয়। নীচের কোডটি অ্যাকশনএভেন্টের জন্য বোতামগুলি নিবন্ধভুক্ত করে যা একটি বোতাম ক্লিক করা হয়। (কর্মক্ষেত্রে লামদা অভিব্যক্তি # জাভা 8)

englishToMorseBt.addActionListener ((e) -> {স্ট্রিং ইংলিশ = englishTextArea.getText ()। ট্রিম (); মোর্সটেক্সটআরিয়া.সেট টেক্সট (ইংরাজী ওয়ার্ডটোমর্স ওয়ার্ড (ইংরাজী));}); morseToEnglishBt.addActionListener ((e) -> ring স্ট্রিং মোর্স = morseTextArea.getText ()। ট্রিম (); ইংলিশেক্সটআরিয়া.সেটটেক্সট (মোর্সওয়ার্ডটোইংলিশ ওয়ার্ড (মোর্স));});

এবং আমরা স্পেসবার বা ব্যাকস্পেস টিপলে কীবোর্ড ইভেন্টগুলি শুনতে এবং স্বয়ংক্রিয়ভাবে অনুবাদটি করতে পাঠ্য অঞ্চলগুলি নিবন্ধভুক্ত করেছি।

ইংলিশেক্সটআরিয়া.এডিডিকিএলিস্টনার (নতুন কীএডাপ্টার () O @ ওভাররাইড পাবলিক শূন্য কী-টাইপড (কীভেন্তি ই) {// স্পেসবারটি চাপলে (বা ব্যাকস্পেস) যদি রূপান্তর হয় তবে (ক্যারেক্টার.আইসওয়াইটস্পেস (e.getKeyChar ()) || e.getKeyCode () == KeyEvent.VK_BACK_SPACE) {morseTextArea.setText (englishWordToMorseWord (englishTextArea.getText ()));}}}); morseTextArea.addKeyListener (new keyAdapter () {@ ওভাররাইড পাবলিক শূন্য কী টাইপড (কীভেন্তি ই) {// স্পেসবার টিপে (বা ব্যাকস্পেস) চাপানো হলে রূপান্তরটি সম্পাদন করা হয় যদি (ক্যারেক্টার.আইসসাইটসেস (e.getKeyChar ()) || e.getKeyCode () == কীEvent.VK_BACK_SPACE) {ইংলিশেস্টআর্টা.সেটটেক্সট (morseWordToEnglishWord (morseTextArea.getText ()));}}});

প্রধান পদ্ধতি

মূল পদ্ধতিতে যা সমস্ত জাভা অ্যাপ্লিকেশনগুলির জন্য প্রবেশের বিন্দু, সেই অ্যাপ্লিকেশনটির উপস্থিতি নিম্বাসলুকএন্ডফিলকে সেট করা হয়েছে, যা জাভার মানক উপস্থিতির চেয়ে সুন্দর দেখায়। এরপরে অ্যাপটি শুরু করা হয়েছে।

পাবলিক স্ট্যাটিক শূন্য মূল (স্ট্রিং [] আরোগুলি) {ইউআইএমএএনএজিআরসেটলুকএন্ডফিল ("জাভ্যাক্স.সুইং.প্লাফ.নিমবাস.নিম্বাসলুকএন্ডফিল") ব্যবহার করে দেখুন; } ধরা (ব্যতিক্রম ই) {ই.প্রিন্টস্ট্যাকট্রেস (); } SwingUtilities.invokeLater (() -> {নতুন MorseCodeTranslator ();}); }

উত্স কোড

সম্পূর্ণ সোর্স কোড এই গিথুব রেপোতে উপলব্ধ। অ্যাপ্লিকেশন ইনস্টল এবং চালানোর জন্য নির্দেশাবলী রেপোর README ফাইলে পাওয়া যাবে। (অ্যাপটিকে একটি তারকা দিতে ভুলবেন না))

এই পোস্টটি সুপারিশ করে কিছু প্রেম দেখান যাতে অন্যরা এটি খুঁজে পেতে পারে। আপনার অনুসরণকারীদেরও টুইট করুন (উদার লোক হন)

আপনার উত্তর, মন্তব্য এবং প্রশ্ন নীচে ছেড়ে মনে রাখবেন।