سرفصل‌های آموزشی
آموزش جاوا
نحوه ساخت یک پنجره ساده با استفاده از Swing در زبان برنامه نویسی جاوا

نحوه ساخت یک پنجره ساده با استفاده از Swing در زبان برنامه نویسی جاوا

در این آموزش قصد داریم تا با استفاده از کلاسی تحت عنوان JFrame اقدام به ساخت یک پنجره ساده نماییم. برای این منظور روی دسکتاپ فولدری تحت عنوان 69th Session ایجاد کرده و سپس نرم افزار Notepad را باز می کنیم و از منوی اصلی File روی گزینه Save As … کلیک کرده و مسیر ذخیره سازی را همان فولدری که پیش از این ایجاد کردیم تعریف می کنیم و نام فایل خود را jframe.java می گذاریم:

حال با دو بار کلیک کردن روی فایل jframe.java این فایل داخل نرم افزار Notepad باز خواهد شد.

اولین کاری که می بایست انجام دهیم این است که حداقل کدهایی که یک پروژه جاوا نیاز دارد تا اجرا شود را وارد فایل خود کنیم. از اینرو کدهای زیر را ابتدا وارد فایل خود کرده سپس به تفسیر آن ها خواهیم پرداخت:

public class jframe{
    public static void main (String[] args){
    }
}

همانطور که پیش از این توضیح دادیم، نام کلاس اصلی پروژه می بایست با نام فایل جاوا دقیقاً یکی باشد از این رو نام jframe را برای کلاس خود در نظر گرفته ایم. سپس داخل کلاس اصلی پروژه متد اصلی پروژه تحت عنوان main را ایجاد کرده ایم که داخل آن هنوز هیچ کدی قرار نگرفته است.

حال از آنجا که می خواهیم از کلاس JFrame جاوا در این پروژه استفاده نماییم، ابتدا می بایست این کلاس را به پروژه خود اصطلاحاً import کنیم. برای این منظور کد فوق را به صورت زیر تکمیل می کنیم:

import javax.swing.JFrame;
public class jframe{
    public static void main (String[] args){
    }
}

همانطور که در کد فوق می بینیم در اولین خط از کد خود ابتدا کلیدواژه import را می نویسیم (به خاطر داشته باشیم که کلیه حروف می بایست به صورت کوچک نوشته شوند) سپس یک فاصله قرار داده و javax را می نویسیم. حال از آنجا که می خواهیم از کلاس JFrame استفاده کنیم و این کلاس داخل کتابخانه های Swing جاوا قرار دارد ابتدا یک نقطه قرار داده و کلیدواژه swing را می نویسیم و مجدد یک نقطه دیگر قرار داده و این بار نام کلاس خود که همان JFrame است را نوشته و در نهایت یک علامت ; قرار می دهیم و در اینجا کار import کردن کلاس JFrame به داخل پروژه به پایان می رسد.

اگر خاطرمان باشد زمانیکه می خواستیم کلاس Scanner جاوا را به پروژه ای فرا بخوانیم، ابتدا می بایست یک شیئ جدید از روی این کلاس ایجاد کرده و نامی برای آن در نظر بگیریم. برای استفاده از کلاس JFrame هم قضیه به همین صورت است. به عبارت دیگر ابتدا می بایست یک شیئ جدید از روی این کلاس ایجاد کرده و نامی برای این شیئی انتخاب کنیم. از این پس با استفاده از نام این شیئ می توان متدهای متفاوتی را به کلاس JFrame جاوا اختصاص داد.

برای این منظور کدهای فوق را به صورت زیر تکمیل می کنیم:

import javax.swing.JFrame;
public class jframe{
    public static void main (String[] args){
        JFrame frame = new JFrame();
    }
}

همانطور که در کد فوق ملاحظه می شود، از آنجا که متد main به منزله نقطه شروع برنامه ما است، پس شیئ جدیدی که می خواهیم از روی کلاس JFrame ایجاد کنیم را می بایست داخل این متد تعریف کنیم.

ابتدا نام کلاس JFrame را نوشته و یک فاصله قرار می دهیم و نامی دلخواه برای آن در نظر می گیریم که در این مثال نام frame در نظر گرفته شده است. سپس یک علامت مساوی قرار می دهیم و از آنجا که می خواهیم یک شیئی جدید تحت عنوان frame از روی کلاس JFrame ایجاد کنیم پس می بایست ابتدا کلیدواژه new را نوشته سپس مجدد نام کلاس JFrame را می نویسیم و در نهایت یک علامت (); در آخر این دستور قرار می دهیم.

از این پس ما فقط با frame سر و کار خواهیم داشت. برای روشن شدن این مسئله کد فوق را به صورت زیر تکمیل می کنیم:

import javax.swing.JFrame;
public class jframe{
    public static void main (String[] args){
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

همانطور که در کد فوق می بینیم ابتدا نام شیئی ساخته شده از روی کلاس JFrame را نوشته (منظور همان frame است) سپس یک نقطه قرار می دهیم و متدی تحت عنوان setDefaulCloseOperation(); را به آن ضمیمه می کنیم. کاری که این متد انجام می دهد این است که امکان بستن پنجره ایجاد شده را به کاربر می دهد. داخل پرانتزهای این متد از پارامتری تحت عنوان JFrame.EXIT_ON_CLOSE استفاده کرده ایم که این دستور را به برنامه می دهد که پس از بسته شدن پنجره از برنامه نیز خارج شود.

اکنون پیش از ادامه نوشتن پروژه قصد داریم تا پروژه خود را در همین مرحله از کار اجرا کنیم. برای این منظور وارد برنامه CMD می شویم سپس با استفاده از دستور cd desktop وارد دسکتاپ سیستم عامل ویندوز شده سپس مجدد دستور cd را نوشته و این بار نام فولدر پروژه خود که 69th Session بود را می نویسیم:

حال می بایست ابتدا دستور javac را نوشته یک فاصله قرار داده و نام فایل خود که jframe.java است را بنویسیم تا پروژه ما به زبان قابل فهم برای ماشین تبدیل شود یا اصطلاحاً Compile شود:

می بینیم که بدون آن که هیچ اروری دریافت کنیم کدهای ما با موفقیت Compile شدند. حال برای آنکه پروژه خود را عملا اجرا کنیم نیاز است تا دستور java را نوشته و این بار فقط نام کلاس خود را بدون پسوند .java بنویسیم. به عبارت دیگر دستور java jframe را می بایست تایپ کرده و دکمه اینتر را فشار دهیم:

می بینیم که هیچ اتفاق خاصی رخ نداد اما هیچ گونه اروری هم دریافت نکردیم. دلیل آن است که به پروژه خود دستور نداده ایم که اصطلاحاً Visible یا "قابل روئیت" شود. پس می بایست کدهای فوق را به صورت زیر تکمیل کنیم:

import javax.swing.JFrame;
public class jframe{
    public static void main (String[] args){
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

همانطور که در کد فوق می بینیم، متدی تحت عنوان setVisible(); را به شیئ frame ضمیمه کرده ایم که این وظیفه را دارا است تا پنجره JFrame را در معرض دید کاربر قرار دهد. اما این متد نیاز به یک پارامتر هم دارد تا پنجره را نمایش دهد و آن پارامتر هم true است.

مجدد مراحل Compile کردن و اجرای پروژه را طی می کنیم تا نتیجه را مشاهده کنیم (به خاطر داشته باشیم هر زمانی که یک تغییر کوچک در کدهای خود اعمال می کنیم، برای آن که آن تغییر اعمال شود حتما می بایست پروژه مجدد Compile شود):

می بینیم که برنامه به درستی اجرا شده اما این در حالی است که محل قرار گیری و همچنین اندازه این پنجره به صورت پیش فرض در نظر گرفته شده اند چرا که هیچ یک از این دو پارامتر را برای پنجره خود در نظر نگرفته ایم. برای این منظور کدهای فوق را به صورت زیر تکمیل می کنیم:

import javax.swing.JFrame;
public class jframe{
    public static void main (String[] args){
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        frame.setBounds(400, 100, 750, 500);
    }
}

در ادامه متدی تحت عنوان setBounds(); را به شیئ خود ضمیمه کرده ایم که این وظیفه را دارا است تا هم اندازه پنجره و هم محل قرار گیری آن روی صفحه نمایش را مشخص سازد. داخل پرانتز این متد، چهار عدد مشاهده می شود که عدد اول که 400 است مخصوص مشخص سازی محل قرار گیری پنجره از سمت چپ است. به عبارت دیگر پنجره این پروژه 400 پیکسل از سمت چپ فاصله خواهد داشت. حال یک کاما قرار داده و عدد دوم که 100 است را می نویسیم. این عدد فاصله پنجره از بالای صفحه نمایش را مشخص می سازد. به عبارت دیگر پنجره ما 100 پیکسل از بالای صفحه نمایش فاصله خواهد داشت. مجدد یک کاما قرار می دهیم و عدد سوم را می نویسیم که در این مثال عدد 750 در نظر گرفته شده است. این عدد مشخص کننده width پنجره است که معادل با 750 پیکسل خواهد بود و در نهایت پس از قرار دادن یک کامای دیگر عدد 500 را وارد می کنیم که مسئول مشخص سازی height پنجره خواهد بود.

حال مجدد برنامه را Compile کردن و خروجی را مشاهده خواهیم کرد:

می بینیم که توانستیم با موفقیت اولین پنجره را با استفاده از کلاس JFrame جاوا ایجاد کنیم.

online-support-icon