JFrame কি তা আগে বলি। java.awt.Frame এর এক্সটেন্ডেড ভার্শন হচ্ছে JFrame. Frame হচ্ছে আরেকটা ক্লাস যা একটি উইন্ডো তৈরি করে দেয়। আর আমরা যা কিছু দেখি সব সব কিছুই একটা ফ্রেম এর মধ্যে। আপনার ব্রাউজার, ওয়ার্ড প্রসেসরটি বা চলতে থাকা মিডিয়া প্লেয়ারটি সব। এগুলোকে আবার Window ও বলা হয়। আবার Frame Window নামে আরেকটা ক্লাসকে এক্সটেন্ড করে তৈরি করা।
JFrame নিয়ে আলোচনার কারন হচ্ছে কারন এটি Java Swing এর একটি সাবক্লাস। Graphical User Interface দেওয়ার জন্য Java Swing একটি পাওয়ারফুল টুলকিট। আচ্ছা, প্রথম প্রথম একটু হিবিজিবি লাগলেও পরে অনেক সহজ হয়ে যাবে। যদিও পুরো জাভা প্রোগ্রামিং ল্যাঙ্গুয়েজটাকেই আমার কাছে হিবিজিবি মনে হচ্ছে। একটা প্রোগ্রামিং ল্যাঙ্গুয়েজ দিয়ে সকল কাজ করার সুবিধে দিতে গিয়েই মনে হচ্ছে এমন হিবিজিবি তৈরি করে পেলছে। মাঝে মাঝে তাই সি প্রোগ্রামাররা জাভা প্রোগ্রামারদের দেখলে কেমন করে যেন তাকায়।
JFrame এড করা অনেক সহজ। JFrame এর একটা ইনস্ট্যান্স তৈরি করে নিলেই হয়। এভাবেঃ
JFrame frame = new JFrame();
এখানে frame নামে আমরা JFrame এর একটা ইনস্ট্যান্স তৈরি করে নিয়েছি।
শুধু এটুকু লিখলেই একটা ফ্রেম যোগ হয়ে যাবে আপনার প্রোগ্রামে। তবে এর জন্য javax.swing.JFrame টা ইমপোর্ট করতে হবে।
import javax.swing.JFrame; public class jFrameDemo { public static void main(String[] args) { JFrame frame = new JFrame(); } }
বিদ্রঃ এখান থেকে কোড কপি করলে আপনার ক্লাস ফাইলের নাম যেন jFrameDemo হয়। অথবা jFrameDemo কে পালটিয়ে আপনার ক্লাস ফাইলের নাম দিয়ে দিন।
এটাই, এবার রান করিয়ে দেখেন। কিছু দেখতে পাচ্ছেন? আমাদের প্রোগ্রাম একটি JFrame তৈরি করছেঠিকই কিন্তু তাকে তো show করতে হবে তাই না? এখন show করলেই কিন্তু আমরা ফ্রেমটি দেখকতে পারব।
import javax.swing.JFrame; public class jFrameDemo { public static void main(String[] args) { JFrame frame = new JFrame(); frame.show(); } }
এবার রান করিয়ে দেখেন, দেখবেন ছোট্ট একটা ফ্রেম দেখা যাচ্ছে।
ছোট দেখার কারন হচ্ছে আমরা ফ্রেমের সাইজ ঠিক করে দি নি। আর ফ্রেমের ভেতরেও কিছু নেই। আমরা যদি ফ্রেমের সাইজ সেট করে দি তাহলে আমাদের ঠিক করে দেওয়া সাইজে ফ্রেমটি দেখা যাবে। যেমন frame.setSize(960, 680); দিলে আমাদের ফ্রেমের সাইজ হবে 960*600 পিক্সেল।
আচ্ছা, ফ্রেমের কি আমরা কোন নাম দিয়েছি? আমরা ইচ্ছে করলে আমাদের ফ্রেমের নাম ও দিতে পারি। এবং তা JFrame এর ইন্সট্যান্স তৈরি করার সময়ই। যেমন JFrame frame = new JFrame(“My Application”); দিয়ে দিলে আমাদের ফ্রেমের উপরে My Application দেখাবে।
import javax.swing.JFrame; public class jFrameDemo { public static void main(String[] args) { JFrame frame = new JFrame("My Application"); frame.show(); frame.setSize(960, 680); } }
মোটামুটি আমরা এখন একটা ফ্রেম তৈরি করতে পারি। এবার ফ্রেমের মধ্যে আমরা ইচ্ছে মত অনেক কিছুই যোগ করতে পারব। যেমন বাটন, টেক্সট, ইনপুট বক্স, মেনুবার, ট্যাব, টেবিল, প্যানেল, ক্যানবাস ইত্যাদি। আমরা এখন শুধু একটা লেভেল এবং একটা টেক্সট ফিল্ড তৈরি করব।
Label দিয়ে কোন কিছুর নাম দেওয়া বা কোন লেখা দেখানোর কাজে ব্যবহার করা হয়। আমরা JLabel নিয়ে কাজ করব। শুরু করার জন্য আগে JLabel এর একটা ইন্সট্যান্স তৈরি করে নিতে হবে। যেমনঃ JLabel jl= new JLable(“Enter Your Name:”); আর JLable যোগ করার জন্য আমাদের javax.swing.JLabel টা import করে নিতে হবে।
এটা লিখলেই একটা Label তৈরি হয়ে যাবে। এবার এটা আমাদের ফ্রেমে যোগ করতে হবে। তা জন্যঃ frame.add(jl); লিখলেই তা আমাদের ফ্রেমে দেখাবে।
সম্পুর্ন প্রোগ্রামটিঃ
import javax.swing.JFrame; import javax.swing.JLabel; public class jFrameDemo { public static void main(String[] args) { JFrame frame = new JFrame("My Application"); frame.show(); frame.setSize(960, 680); JLabel jl= new JLabel("Enter Your Name:"); frame.add(jl); } }
এবার আমরা একটি টেক্সটফিল্ড যোগ করব, যা দিয়ে ইউজার থেকে যে কোন টেক্সট পড়তে পারবে। আমরা JTextField ব্যবহার করব। একই ভাবে প্রথমে আমাদের একটা ইন্সট্যান্স তৈরি করে নিতে হবে। যেমনঃ JtextField input = new JTextField(); টেক্সটফিল্ডটি যুক্ত করার জন্য অন্যদের মত আমাদের javax.swing.JTextField টা import করে নিতে হবে আমাদের প্রোগ্রামে।
ইন্সট্যান্স তৈরি করার পর তা দেখানোর জন্য JLabel এর মত তা ফ্রেমে যুক্ত করে নিতে হবে।
তার জন্য frame.add(input); লিখলেই তা ফ্রেমে যুক্ত হবে। এবার রান করিয়ে দেখুন। পুরো ফ্রেম জুড়ে একটি মাত্র টেক্সট ইনপুট। আমাদের Label কোথায় গেলো?
ঘটনা ঘটছে অন্য জাগায়, আমরা আগে যুক্ত করছি লেভেল কে। তারপর টেক্সট ফিল্ডকে। এখন টেক্সট ফিল্ড এসে করল কি, লেভেলকে মুছে নিজেই পুরো ফ্রেম দখল করে নিল। মহা ঝামেলা!
তার জন্য আমাদের ফ্রেমের লে আউট ঠিক করতে হবে। লেআউট নিয়ে আরেকদিন লেখা যাবে। FlowLayout টা ব্যবহার করব। frame.setLayout(new FlowLayout()); এটা এড করলে আমাদের ফ্রেমের ল্যাআউট পরিবর্তন হয়ে যাবে। এবার প্রোগ্রামটা রান করিয়ে দেখুন। সব গুলো কোডঃ
import java.awt.FlowLayout; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; public class jFrameDemo { public static void main(String[] args) { JFrame frame = new JFrame("My Application"); frame.show(); frame.setSize(300, 300); frame.setLayout(new FlowLayout()); JLabel jl= new JLabel("Enter Your Name:"); frame.add(jl); JTextField input = new JTextField(10); frame.add(input); } }
আজ এতটুকুই 🙂
Happy Java Programming!
জাভা প্রোগ্রামিং নিয়ে আমার লেখা সকল পোস্টের লিঙ্ক
Good Post, keep posting, best of luck 🙂
Thank you so much.
nice post…………tnx bro
ameo shoro korci……..tnx brother
আস্সালামু আলাইকুম,আপনার লিখা পড়ে ভাল লেগেছে|মনে হচ্ছে এবার নিজে নিজেই কিছু শিখতে পাড়বো আপনার মত একজন বিজ্ঞ্য অন লাইন শিক্ষকের মাধ্যমে |আল্লাহ আপনার হেফাজত করুক |
ধন্যবাদ টিউটোরিয়ালটির জন্য। কিন্তু আমার NetBeans 8.2 এবং JDK 1.8 এ এই ‘frame.show();’ কাজ করছে না। রান করানো হলে রানিং এসে বসে থাকে আর .show() এই লেখাটি কেটে যাচ্ছে।
.show() সম্ভবত ডেপ্রিকেটেড। আমি লেখাটা আপডেট করার চেষ্টা করব 🙂
ধন্যবাদ ভাইয়া। আশা করি ফ্রি সময়ে জাভা নিয়ে আরও কিছু টিউটোরিয়াল লিখবেন। 🙂