Java Option Panes
یک کلاس مفید دیگر برای پذیرفتن ورودی از کاربر و نمایش نتایج، کلاس JOptionPane است. این کلاس در کتابخانه javax.swing یافت می شود. کلاس JOptionPane به شما این اجازه را می دهد که جعبه های ورودی مثل نمونه زیر داشته باشید:
و همچنین جعبه های پیام:
کدی که در بخش نهم نوشتیم را اینبار با این کلاس می نویسیم. اولین کاری که باید کرد اضافه کردن کتابخانه این کلاس به مراجع برنامه است:
import javax.swing.JOptionPane;
کد بالا به جاوا اعلام می کند که ما می خواهیم از کلاس JOptionPane، که در کتابخانه javax.swing قرار دارد استفاده کنیم. می توانید برای پیاده سازی، یک پروژه جدید ایجاد کنید یا این که پروژه بخش قبل را تغییر دهید. اینجا ما یک پروژه جدید تعریف کردیم، با نام UserInput و نام کلاس InputBoxes.(اگر روش ایجاد پروژه را فراموش کردید به بخش های قبل مراجعه کنید.)
کد import ،که بالا نوشتیم را به پروژه جدید خود اضافه کنید:
دلیل این که یک خط زرد رنگ زیر خط دوم وجود دارد این است که از آن کلاس هنوز در برنامه استفاده ای نکرده ایم و Netbeans این نکته را به ما گوشزد کرده است.
برای ایجاد یک جعبه ورودی که کاربر بتواند در آن تایپ کند، میتوانیم از متد showInputDialog که در کلاس JOptionPane هست استفاده کنیم. بسیار خوب، حالا مانند بخش قبل یک ورودی را از کاربر دریافت و در متغیر firstName ذخیره می کنیم. پس کد زیر را اضافه کنید:
String firstName; firstName = JOptionPane.showInputDialog("First Name");
به محض این که JOptionPane را تایپ و سپس نقطه را تایپ کنید لیستی از گزینه های دسترس به شما نشان داده خواهد شد:
روی showInputDialog دو بار کلیک کنید. در بین دوپرانتز مقابل showInputDialog پیغامی را که می خواهید در بالای جعبه متن ورودی نشان داده شود تایپ کنید. ما اینجا “First Name” را تایپ کرده ایم. که باید مانند تمامی رشته ها میان دو علامت ” نوشته شود. و در مرحله بعد باید نام خانوادگی را از کابر دریافت کنیم:
String familyName; familyName = JOptionPane.showInputDialog("Family Name");
حال نام و نام خانوادگی را با هم در متغیری به نام fullName ذخیره می کنیم:
String fullName; fullName = "You are " + firstName + " " + familyName;
برای نمایش نتیجه در یک جعبه پیام کد زیر را اضافه کنید:
JOptionPane.showMessageDialog(null,fullName);
این بار، از میان لیست گزینه ها showMessageDialog را انتخاب کردیم. بین دو پرانتز مقابل آن اول کلمه null را داریم که کلمه ای کلیدی در جاواست و اینجا فقط به این معناست که جعبه پیام به هیچ چیز دیگری در برنامه وابسته نیست. بعد از کاما متنی که می خواهیم در جعبه پیام نمایش داده شود، قرار می گیرد. کل کد شما بدین شکل خواهد بود:
به خط آخر کد دقت کنید:
System.exit(0);
همان طور که از نامش می توان حدث زد، به ما این اطمینان را می دهد که برنامه بسته شده است. همچنین از حافظه تمام شیء های ساخته شده را پاک می کند و در واقع حافظه را آراسته می کند. حالا برنامه را اجرا کنید. در مرحله اول جعبه ورودی First Name را می بینید. متنی را در آن تایپ کنید و روی OK کلیک کنید:
سپس جعبه ورودی Family Name را می بینید. متنی را در آن تایپ کنید و روی OK کلیک کنید:
بعد از این که روی OK کلیک کنید، جعبه پیام نمایش داده خواهد شد:
روی OK کلیک کنید تا برنامه به پایان برسد.
[divider]
تمرین
کد ایجاد جعبه ورودی در برنامه را برای نام و نام خانوادگی به کد زیر تغییر دهید و نتیجه را ببینید:
firstName = JOptionPane.showInputDialog("First Name","Enter Your First Name"); familyName = JOptionPane.showInputDialog("Family","Enter Your Family Name");
حالا کد ایجاد جعبه پیام را به کد زیر تغییر دهید و نتیجه را ببینید:
JOptionPane.showMessageDialog(null,fullNameو"Name",JOptionPane.INFORMATION_MESSAGE);
به جای INFORMATION_MESSAGE در کد بالا از موارد زیر استفاده کنید و برای هر کدام نتیجه را ببینید:
ERROR_MESSAGE
PLAIN_MESSAGE
QUESTION_MESSAGE
WARNING_MESSAGE
جعبه های ورودی فقط برای متن استفاده نمی شوند. از آنها می توان برای دریافت اعداد نیز استفاده کرد. یک برنامه بنویسید که از کاربر طول و عرض مستطیل را بگیرد و مساحت آن را در یک جعبه پیام به کاربر نشان دهد.
راهنمایی: می توانید عدد ورودی کاربر را ابتدا در متغیر String ذخیره کنید وچون نمی توان دو متغیر String را در هم ضرب کرد باید آن ها را با استفاده از مبدل String به int آن ها را به integer، تبدیل کرده و سپس در هم ضرب کنید.
String breadth; String height; breadth = JOptionPane.showInputDialog("Rectangle Breadth"); height= JOptionPane.showInputDialog("Rectangle height"); int area = Integer.parseInt(breadth) * Integer.parseInt(height); JOptionPane.showMessageDialog(null,"answer = "+area); System.exit(0);
همانطور که در کد بالا می بینید ما از این مبدل استفاده کرده ایم، روش استفاده از این مبدل این گونه است که ابتدا Integer.parsInt را تایپ کرده و سپس در داخل پرانتز رشته ای که می خواهیم به int تبدیل شود را قرار می دهیم. به نظر شما مشکل این روش چیست؟ مشکل اینجاست که اگر کاربر، عددی اعشاری به عنوان ورودی تایپ کند برنامه به اصطلاح crash می کند. چگونه می توان این مشکل را حل نمود؟ می توان به جای مبدل Integer از مبدل Float استفاده کرد. به عنوان تمرین سعی کنید این کار را انجام دهید.
در بخش بعدی به شرح دستور IF، می پردازیم.