جاوا میں کیلکولیٹر بنائیں

NetBeans IDE کی مدد سے Java میں کیلکولیٹر بنانے کا مقصد یہ ہے کہ نئے پروگرامرز کا جاوا کے Swing فریم ورک سے تھوڑا سا تعارف ہو جائے۔ Swing فریم ورک ڈیسک ٹاپ سافٹ ویئرز کے لیے GUI یعنی Graphical User Interface بنانے کی سہولت فراہم کرتا ہے۔ NetBeans استعمال کرنے کا فائدہ یہ ہے کہ ڈیسک ٹاپ سافٹ ویئرز کے لیے GUI تیار کرنے کے لیے کوڈنگ کی ضرورت نہیں رہتی بلکہ Drag & Drop کرتے ہوئے مختلف کمپوننٹس مثلاً‌ چیک باکس، بٹن، ڈراپ ڈاؤن مینیو، ٹیبل، مینیو بار اور ٹول بار وغیرہ فارم میں شامل کیے جا سکتے ہیں۔ اس ٹٹوریل کے آخر میں کیلکولیٹر کا مکمل پراجیکٹ ZIP فائل کی شکل میں مہیا کیا گیا ہے۔ آئیں کیلکولیٹر کی تیاری مرحلہ وار دیکھتے ہیں:



فائل مینیو سے نیا پراجیکٹ شروع کریں۔

نیٹ بینز کے فائل مینیو سے نیا پراجیکٹ شروع کریں


پراجیکٹ کے لیے ڈائیلاگ باکس سے Java Application منتخب کریں۔

پراجیکٹ کے لیے ڈائیلاگ باکس سے جاوا ایپلی کیشن منتخب کریں


پراجیکٹ کا نام اور ہارڈ ڈسک پر پراجیکٹ کے فولڈر کا نام مہیا کریں۔ نیچے Create Main Class کا آپشن غیر منتخب کر دیں۔ اگلے مرحلے میں ہم پراجیکٹ میں JFrame Form شامل کریں گے، اسے Main class کے طور پر استعمال کیا جائے گا۔ Main class وہ ہوتی ہے جس کے اندر Main method مہیا کیا گیا ہوتا ہے۔ کسی بھی جاوا پروگرام کا آغاز مین میتھڈ سے ہوتا ہے۔

پراجیکٹ کا نام اور ہارڈ ڈسک پر پراجیکٹ کے فولڈر کا نام مہیا کریں


<default package> پر ماؤس کے دائیں بٹن کی مدد سے کلک کریں اور درج ذیل تصویر کے مطابق JFrame Form پراجیکٹ میں شامل کر لیں۔

ڈیفالٹ پیکیج میں نیا جے فریم فارم شامل کریں


JFrame Form کی جاوا کلاس کے لیے نام مہیا کریں۔

جے فریم فارم کی جاوا کلاس کے لیے نام مہیا کریں


اوپر ٹول بار پر موجود Run بٹن کے ذریعے جاوا پروگرام چلائیں جس سے ایک ڈائیلاگ باکس ظاہر ہوگا۔ اس ڈائیلاگ باکس کی مدد سے اس جاوا پروگرام کے لیے Main class منتخب کریں۔ اس کے بعد اسکرین پر ایک خالی فارم ونڈو ظاہر ہوگی جسے آپ فی الحال بند کر دیں۔ کیونکہ اس فارم پر ہم اگلے مرحلے میں کیلکولیٹر کے لیے ٹیکسٹ فیلڈز اور بٹن شامل کریں گے۔

پراجیکٹ کے آغاز کے لیے مین میتھڈ پر مشتمل جاوا کلاس منتخب کریں


Form کا سائز ماؤس کی مدد سے کسی بھی کنارے سے پکڑ کر حسب ضرورت چھوٹا کریں۔ دائیں طرف موجود Swing پینل سے ٖدرج ذیل تصویر کے مطابق فارم پر Buttons اور Text Fields شامل کریں۔ ان بٹنوں اور ٹیکسٹ فیلڈز کا مطلوبہ سائز مقرر کرنے کے لیے آپ کو تھوڑا سا کام کرنا ہوگا۔ کسی بھی بٹن یا ٹیکسٹ فیلڈ پر کلک کرنے سے اس کے چاروں طرف ہینڈلز ظاہر ہوں گے جن کی مدد سے سائز سیٹ کیا جا سکتا ہے۔

جے فریم فارم پر کیلکولیٹر کے لیے بٹنز اور ٹیکسٹ فیلڈز شامل کریں


فارم پر موجود کسی بھی بٹن پر ماؤس کے دائیں بٹن کی مدد سے کلک کریں جس سے ایک مینیو ظاہر ہوگا۔ درج ذیل تصویر کے مطابق ہر بٹن کے لیے ٹیکسٹ اور ویری ایبل کا نام مقرر کریں۔ ٹیکسٹ ان بٹنوں کے اوپر لکھا ہوا نظر آئے گا، جبکہ ویری ایبل کا نام استعمال کرتے ہوئے کسی بھی بٹن کو کوڈنگ میں کال کیا جا سکے گا۔ میں نے یوں کیا ہے کہ ’’نمبر ایک‘‘ بٹن کا ٹیکسٹ 1 رکھا ہے جو اس بٹن کے اوپر نظر آئے گا، جبکہ اس بٹن کے ویری ایبل کا نام one رکھا ہے۔ باقی نمبروں والے بٹنوں کے نام بھی اسی طریقے سے رکھے گئے ہیں۔ اسی طرح آپریٹرز کے بٹنوں کے ویری ایبل نام plus, minus, multiply, divide رکھے گئے ہیں۔ اعشاریے کے بٹن کا ویری ایبل نام dot رکھا گیا ہے۔ مساوی بٹن کا نام equal اور کلیئر بٹن کا نام clear رکھا گیا ہے۔ اوپر والی ٹیکسٹ فیلڈ کا نام topField جبکہ نیچے والی ٹیکسٹ فیلڈ کا نام bottomField رکھا گیا ہے۔

نوٹ: میں نے ویری ایبلز کے آسان نام رکھنے کی خاطر Verb اور Noun کا خیال نہیں کیا، آپ ویری ایبلز کے نام اپنی مرضی کے مطابق رکھ سکتے ہیں۔

ہر بٹن کے لیے ٹیکسٹ اور ویری ایبل کا نام سیٹ کریں


بٹنوں کا سائز بہتر طور پر سیٹ کرنے کے لیے فارم پر موجود تمام بٹن سلیکٹ کریں، پھر ماؤس کے دائیں بٹن کی مدد سے کلک کر کے مینیو کھولیں اور درج ذیل تصویر میں دکھائے گئے آپشنز مثلاً‌ Set to Default Size وغیرہ استعمال کرتے ہوئے ان کا سائز بہتر کرلیں۔ بٹنوں کے لیے Right یا Left کسی ایک طرف الائنمنٹ ضرور سیٹ کریں، ورنہ فارم کا سائز تبدیل ہونے کی صورت میں کچھ بٹن دائیں طرف رہ جائیں گے اور کچھ بائیں طرف۔
اس کے علاوہ Properties پینل میں موجود margin آپشن کے ذریعے بٹنوں کے ٹیکسٹ کے اردگرد فاصلہ بھی مقرر کیا جا سکتا ہے۔ بہرحال تھوڑی سی مشق کرنے سے آپ فارم پر موجود ایلیمنٹس کا سائز اپنی مرضی کے مطابق سیٹ کر سکتے ہیں۔

جے فریم فارم پر بٹنوں کا سائز بہتر بنائیں


دونوں Text Fields سلیکٹ کریں اور Properties پینل سے ان کی الائنمنٹ منتخب کریں۔ اور ساتھ ہی editable کے سامنے موجود چیک باکس غیر منتخب کر دیں تاکہ یوزر براہ راست ان میں کوئی ویلیو نہ لکھ سکے۔

ٹیکسٹ فیلڈز کی لکھائی کی سمت مقرر کریں اور انہیں ناقابل تبدیل بنائیں


اب Source میں آجائیں۔ فائل کے بالکل آغاز میں جہاں سے جاوا Class شروع ہوتی ہے، وہاں تین Variables ڈیفائن کریں۔ یہ کلاس لیول کے ویری ایبلز ہیں جنہیں اس کلاس میں موجود کسی بھی Method سے پڑھا اور تبدیل کیا جا سکتا ہے۔

  1. پہلا ویری ایبل result ہے جو float ٹائپ کا ہے، اس میں اعشاریے پر مشتمل نمبر محفوظ کیا جا سکتا ہے۔ result ویری ایبل میں ویلیو تب محفوظ ہوگی جب / * - + = میں سے کسی بٹن پر کلک کیا جائے گا۔
  2. دوسرا ویری ایبل currentValue ہے جو String ٹائپ کا ہے۔ جیسے ہی کیلکولیٹر پر مختلف نمبرز کے بٹنوں پر کلک کیا جائے گا، یہ نمبر اس ویری ایبل میں جڑتے جائیں گے۔ کسی بھی آپریٹر بٹن پر کلک کرنے سے currentValue ویری ایبل کی ویلیو result ویری ایبل کے ساتھ تقسیم، ضرب، تفریق یا جمع ہوگی، اور آخری نتیجہ result ویری ایبل میں محفوظ ہو جائے گا۔ اور ساتھ ہی currentValue کی ویلیو ختم ہو جائے گی۔ اسی طرح یوزر جیسے جیسے نئی ویلیوز مہیا کرکے آپریٹر بٹن پر کلک کرتا جائے گا، یہ سارا عمل پھر دہرایا جائے گا۔ جونہی یوزر مساوی بٹن پر کلک کرے گا، آخری مرتبہ currentValue میں مہیا کی گئی ویلیو result ویری ایبل کے ساتھ کیلکولیٹ ہوگی، اور نتیجہ result ویری ایبل میں محفوظ ہو جائے گا۔ آخر میں result ویری ایبل کی ویلیو نیچے والی ٹیکسٹ فیلڈ میں ظاہر ہو جائے گی۔
  3. تیسرا ویری ایبل operator ہے۔ یوزر جب ویلیو مہیا کرنے کے بعد کسی آپریٹر بٹن پر کلک کرے گا تو یہ آپریٹر اس ویری ایبل کی مدد سے یاد رکھا جائے گا۔

جاوا سورس کوڈ میں کلاس کی سطح پر تین ویری ایبل نائیں


درج ذیل تصویر کے مطابق ()performCalculation کے نام سے ایک میتھڈ مہیا کیا جا رہا ہے۔ کسی بھی آپریٹر پر یا مساوی بٹن پر کلک کرنے سے یہ میتھڈ کال ہوگا۔

سب سے پہلی دفعہ جب کسی آپریٹر بٹن پر کلک کیا جائے گا تو currentValue ویری ایبل کی ویلیو 0 میں جمع ہوگی۔ اس لیے کہ اس وقت ویری ایبلز درج ذیل حالت میں ہوں گے:

result = 0;
currentValue = "user provided number";
operator = "+";

پھر جس آپریٹر بٹن پر کلک کیا گیا ہوگا اس کی ویلیو operator ویری ایبل میں محفوظ کی جائے گی۔ یعنی اس دفعہ یوزر نے جو آپریٹر (/ * - +) منتخب کیا ہے وہ اگلی دفعہ کسی آپریٹر بٹن یا پھر مساوی بٹن پر کلک کرنے سے استعمال ہوگا۔

ہم نے اپنی سہولت کی خاطر currentValue ویری ایبل کی ٹائپ String رکھی ہے تاکہ اس میں مختلف نمبرز جوڑے جا سکیں۔ لیکن کیلکولیشن میں استعمال کے لیے اس ویری ایبل کی ویلیو ہمیں float میں چاہیے۔ چنانچہ جاوا کی یوٹیلیٹی کلاس Float کے ()parseFloat میتھڈ کی مدد سے اس ویری ایبل کی ویلیو float میں تبدیل کی جا رہی ہے۔

کیلکولیشن کا میتھڈ لکھیں


اب Design میں آجائیں۔ فارم پر موجود کسی بھی نمبر والے بٹن پر ماؤس کے دائیں بٹن کے ساتھ کلک کریں جس سے ایک مینیو ظاہر ہوگا۔ درج ذیل تصویر کے مطابق ہر نمبر والے بٹن کے ساتھ Event منسلک کریں۔ اس ایونٹ کی مدد سے اس بٹن کے لیے وہ کوڈ مہیا کیا جا سکتا ہے جو اس پر کلک کرنے سے چلے گا۔

ہر بٹن کے ساتھ ایکشن ایونٹ منسلک کریں


درج ذیل تصویر کے مطابق ہر بٹن کے ایونٹ کے لیے کوڈ مہیا کریں۔ نمبر کی ویلیو بٹن کے اعتبار سے تبدیل کرتے جائیں۔

  1. کوڈ کی پہلی لائن پر اوپر والی ٹیکسٹ فیلڈ میں پہلے سے موجود ویلیو ()getText میتھڈ کی مدد سے حاصل کی گئی ہے۔ اس ویلیو کے ساتھ بٹن کی ویلیو جوڑ کر ()setText کی مدد سے مکمل ویلیو دوبارہ اوپر والی ٹیکسٹ فیلڈ میں رکھی جا رہی ہے۔ اوپر والی ٹیکسٹ فیلڈ صرف یہ دکھانے کے لیے ہے کہ یوزر نے اب تک کونسی ویلیوز مہیا کی ہیں۔ اس کا کوڈ میں کی جانے والی کیلکولیشن کے ساتھ کوئی تعلق نہیں ہے۔
  2. دوسری لائن پر currentValue ویری ایبل میں اس بٹن کی ویلیو شامل کی جا رہی ہے جس پر کلک کیا گیا ہے۔ یہ ویلیو ()performCalculation میتھڈ میں استعمال ہوگی۔

نمبر والے بٹنوں کے ایونٹس کے لیے کوڈ مہیا کریں


ہر آپریٹر بٹن کے ساتھ ایونٹ منسلک کریں اور درج ذیل تصویر کے مطابق کوڈ مہیا کریں۔ آپریٹر بٹن کے لحاظ سے آپریٹر کی ویلیو تبدیل کرتے جائیں۔

  1. پہلی لائن پر اوپر والی ٹیکسٹ فیلڈ میں آپریٹر کی ویلیو شامل کی جا رہی ہے۔
  2. دوسری لائن پر ()performCalculation میتھڈ کال کیا جا رہا ہے جس کی وضاحت اوپر دی گئی ہے۔
  3. تیسری لائن پر operator ویری ایبل میں اس آپریٹر کی ویلیو رکھی جا رہی ہے جس پر کلک کیا گیا ہے۔ یعنی پہلے پچھلی دفعہ سلیکٹ کیے گئے آپریٹر کی مدد سے کیلکولیشن ہوگی، اس کے بعد operator ویری ایبل میں اس دفعہ منتخب کیا گیا آپریٹر محفوظ ہوگا۔

ریاضی کے آپریٹرز والے بٹنوں کے لیے کوڈ مہیا کریں


مساوی بٹن کے ساتھ ایونٹ منسلک کریں اور درج ذیل تصویر کے مطابق کوڈ مہیا کریں۔

  1. پہلی لائن پر ()performCalculation میتھڈ کال کیا گیا ہے۔ یہ method کیلکولیشن کرنے کے بعد آخری نتیجہ result ویری ایبل میں محفوظ کر دے گا۔
  2. دوسری لائن پر result ویری ایبل کی ویلیو نیچے والی ٹیکسٹ فیلڈ میں دکھائی جا رہی ہے۔
  3. تیسری لائن پر اوپر والی ٹیکسٹ فیلڈ میں سے پرانی ویلیوز ختم کی جا رہی ہیں۔

مساوی بٹن کے لیے کوڈ مہیا کریں


کلیئر بٹن کے ساتھ ایونٹ منسلک کریں اور درج ذیل تصویر کے مطابق کوڈ مہیا کریں۔ آپ دیکھ رہے ہیں کہ تمام ویری ایبلز پرانی حالت میں واپس لے جائے جا رہے ہیں۔ جو ویری ایبلز ہم نے کلاس کے شروع میں ڈیفائن کیے تھے، ان کی ویلیوز = کی مدد سے سیٹ کی جا رہی ہیں۔ جبکہ بٹنوں کی ویلیوز ان کے ()setText میتھڈ کی مدد سے سیٹ کی جا رہی ہیں۔

کلیئر بٹن کے لیے کوڈ مہیا کریں


Form پر کلک کر کے منتخب کریں اور Properties پینل کی مدد سے فارم کا ٹائٹل سیٹ کریں۔
اس کے علاوہ پینل پر نیچے اسکرول کریں اور Resizeable پراپرٹی غیر منتخب کر دیں، تاکہ یوزر کیلکولیٹر کی ونڈو کا سائز تبدیل نہ کر سکتے۔

جے فریم فارم کا ٹائیٹل مقرر کریں


اب Run بٹن کی مدد سے یہ ایپلی کیشن چلا کر ٹیسٹ کریں۔

کیلکولیٹر ایپلی کیشن چلا کر ٹیسٹ کریں


اگر آپ یہ کیلکولیٹر اپیلی کیشن دوستوں کو دینا چاہتے ہیں تو درج ذیل تصویر کی مدد سے Jar فائل بنائیں۔ یہ فائل پراجیکٹ کے اندر dist فولڈر کے اندر موجود ہوگی۔ اس پروگرام کے چلنے کے لیے کمپیوٹر پر JRE یعنی Java Runtime Environment کا پہلے سے انسٹال ہونا ضروری ہے، جو کہ عموماً‌ صارفین کے کمپیوٹرز پر کسی نہ کسی ضرورت کے لیے پہلے سے موجود ہوتا ہے۔ اگر آپ کمرشل مقاصد کے لیے کوئی سافٹ ویئر بنائیں گے تو پھر آپ انسٹالیشن پیکیج اس طرح سے تیار کر سکتے ہیں کہ سافٹ ویئر کے ساتھ JRE بھی انسٹال ہو۔

ڈسٹری بیوشن کے لیے کیلکولیٹر کا پیکیج بنائیں