پلتفرم Java SE با محیط توسعه IDE) NetBeans) ؛ (11)
وقتی یک فرم ایجاد می کنیم درواقع این یک فریم است. یک فریم خالی ایجاد کردیم و فقط از کادر آبی رنگ آن می توان استفاده کردو از فضای داخل آن نمی توان استفاده کرد. مثلا نمی توان به پس زمینه ی آن رنگ نسبت داد. هر چند که
مترجم : حبیب الله علیخانی
منبع:راسخون
منبع:راسخون
JPanel(پنل):
وقتی یک فرم ایجاد می کنیم درواقع این یک فریم است. یک فریم خالی ایجاد کردیم و فقط از کادر آبی رنگ آن می توان استفاده کردو از فضای داخل آن نمی توان استفاده کرد. مثلا نمی توان به پس زمینه ی آن رنگ نسبت داد. هر چند که در این حالت می توان از متد SetBackgrauond() استفاده کرد، علت آن این است که این متد به کتابخانه ی Java.AWT برمی گردد و همانطور که در قسمت Swing گفته شد تمامی کتابخانه های swing مبتنی بر AWT است(همان اپلت های جاوا) و چون کلاس JFrame از روی کلاس Form مشتق شده، در هر شرایطی این متد را دارد اما کاری انجام نمی دهد.در تمامی زبانهای برنامه نویسی اشیا همدیگر را احاطه می کنند. Form ، Panel را احاطه می کند و panel ، تمام panel های داخلی و آنها تمام دکمه ها و.....
پس برای حل این مشکل از کلاس JPanle استفاده می کنیم. (کلاس JPanel ازکتابخانه ی Javax.swing است) .
پروژه ی بخش swing (بخش قبل) را دنبال می کنیم که کد های زیر را در کلاس Main دارد:
ابتدا از کلاس JPanel نمونه می گیریم و سپس به آن رنگ زمینه(زرد) نسبت می دهیم(با استفاده از متد setBackground ) و در آخر برای استفاده آن در JFrame باید آن را به JFrame نسبت دهیم (با استفاده از متد add):
JPanel jpanel1 = new JPanel();
jpanel1.setBackground(Color.YELLOW);
frame1.add(jpanel1);
وقتی از کلاس JPanel نمونه می گیریم، علامت hint در سمت چپ ظاهر شده که می بینیم می گوید JPanel را نمی شناسد و باید javax.swing.JPanel را Import کنیم. با کلیک کردن آن به صورت خودکار وارد می کند.
و قتی از Color استفاده می کنیم ، علامت hint در سمت چپ ظاهر شده که می بینیم می گوید Color را نمی شناسد و باید Java.AWT.Color را Import کنیم.با کلیک کردن آن به صورت خودکار وارد می کند.
با استفاده از متد setContentpane() می توانیم از متد setBackground() هم به گونه ای دیگر استفاده کنیم. خط مربوط به متد setBackground() را کامنت می کنیم و دستورات زیر را اضافه می کنیم:
frame1.getContentPane().setBackground(Color.red);
button(دکمه):
این کار را به دو صورت می توان انجام داد. یک راه استفاده از پنجره ی Palette در صفحه ی Design است و با درگ و دراپ می توان به هر تعداد که می خواهیم Button قرار دهیم. (البته اگر کلاس ما از JFrame ارث بری می کند یعنی JFram ساخته باشیم). اگرنخواهیم از Button آماده استفاده کنیم و بخواهیم با کدنویسی انجام دهیم به صورت زیر عمل می کنیم:پروژه ی قبلی را دنبال می کنیم و ابتدا از کلاس JButton نمونه می گیریم به نام jbtn1 :
JButton jbtn1=new JButton();
JButton یک کامپوننت از پکیج Javax.swing می باشد.وقتی از کلاس JButton نمونه می گیریم، علامت hint در سمت چپ ظاهر شده که می بینیم می گوید JButton را نمی شناسد و باید javax.swing.JButton را Import کنیم. با کلیک کردن آن به صورت خودکار وارد می کند.
Button در متد سازنده ی خود 4 تا overload دارد. در بخش سازنده ها این مطلب را کاملا توضیح دادیم که سازنده مقادیر پیش فرض را برای Field های کلاس ایجاد کند. هر کدام ازاین 4 ، overload برای منظور های مختلفی به کار می روند. در اینجا ما از JButton(String text) استفاده می کنیم و متنی که می خواهیم روی button نمایش دهد را در قسمت String text تایپ می کنیم. (در این مثال می خواهیم دکمه ی OK را بسازیم)
jpanel1.add(jbtn1);
این قسمت از کد به صورت زیر می باشد:اکنون Button دیگری به نام Cancel به پروژه اضافه می کنیم :
مانند ادیتور word تا زمانیکه سطر اول استفاده نشود به سطر های دیگر دسترسی ندارد مگر با Enter کردن به سطر های بعدی می رود. در اینجا هم همینطور است که اشیا تا وقتی که ردیف اول پر نشود به ردیف بعدی دسترسی ندارند.
اشیا مال JPanel هستند و برای JFrame نیستند. یعنی پدر(parent) آنها JPanel است.
در اینجا Layout مطرح می شود. Layout یعنی آرایش یا ترتیب وسایل یا طرح بندی. Layout ها مال پکیج Java.AWT است. ما ابتدا این پکیج را به پروژه import می کنیم تا همه ی کلاسهای Layout را نمایش دهد. وقتی که Layout مورد نظر را انتخاب کردیم خودش پکیج مربوط به آن را import می کندو بعد از آن پکیج کلی java.awt.LayoutManager را حذف می کنیم:
) jpanel1.setLayout(New
وقتی بعد از تایپ New ، CTRL+Space را می زنیم، می بینیم کلاسهای Layout زیادی وجود دارند مانند:GridLayout : به صورت جدول تمام سطر ها را تقسیم می کند.
BorderLayout : تمام فرم را پوشش می دهد.
و....
اکنون به عنوان تمرین، از بین این لیست ارائه شده BorderLayout را انتخاب می کنیم. بعد از انتخاب آن پکیج مربوط به آن import می شود(java.awt.BorderLayout). همانطور که در بالا گفته شد اکنون پکیج java.awt.LayoutManager دیگر بلا استفاده است و ما آن را حذف می کنیم.
پس کد به صورت زیر می شود:
اگر GridLayout را انتخاب کنیم، (پکیج آن اضافه شد) ، خروجی به صورت زیر می شود:
حال به قبل بر می گردیم و می خواهیم دو دکمه ی Ok و Cancel در مکان خاصی قرار گیرند. برای این کار ابتدا ، 1- پارامتر ورودی متد setLayout را null قرار دهیم و 2- سپس برای دکمه ها موقعیت مکانی تعریف می کنیم.
اگر ما پارامتر ورودی متد setLayout را null قرار دهیم ، هیچ Layout ای را نمی پذیرد. خروجی به صورت زیر می شود : (کد آن در کادر نارنجی)
حال می خواهیم بگوییم که این دکمه ها چه ابعادی داشته باشند و در چه موقعییت ای قرار گیرند. برای این کار از متد setBound() استفاده می کنیم، همانگونه که برای شی frame1 این کار را انجام داده ایم. مانند تصویر زیر، اعداد را وارد کردیم و اجرا کردیم:
/ج
مقالات مرتبط
تازه های مقالات
ارسال نظر
در ارسال نظر شما خطایی رخ داده است
کاربر گرامی، ضمن تشکر از شما نظر شما با موفقیت ثبت گردید. و پس از تائید در فهرست نظرات نمایش داده می شود
نام :
ایمیل :
نظرات کاربران
{{Fullname}} {{Creationdate}}
{{Body}}