کار با برخی از متدها و خاصیت های کنترل ها

در این درس می‌خواهیم شما را با برخی از متدها و خاصیت‌هایی که در درس قبل نام بردیم آشنا کنیم. ولی ابتدا باید یک نکته‌ای را یادآور شویم که چون کنترل‌ها همه کلاس هستند باید برای استفاده از هر یک از این کلاس‌ها باید یک نمونه از آنها ایجاد کرد. در این درس ما به سه کلاس برای توضیح بیشتر خاصیت‌ها و متدها نیاز داریم که عبارتند از JFrame ،JButton و JPanel. در مورد این سه کنترل در درس‌های آینده بیشتر توضیح می‌دهیم. فقط در این درس می‌خواهیم یک دکمه را به پنل و پنل را فریم اضافه کنیم و سپس خاصیت‌ها و متدهای پر کاربرد را تست کنیم. برای شروع برنامه NotePad را باز کرده و کدهای زیر را در داخل آن بنویسید :

  1: import java.awt.*;
  2: import javax.swing.*;
  3: 
  4: public class FrameDemo 
  5: {
  6:     public static void main(String[] args) 
  7:     {
  8:         JFrame frame1 = new JFrame("Properties and Methods Demo");
  9:         JPanel panel1 = new JPanel();
 10:         JButton button1 = new JButton("Button1");
 11:         
 12:         panel1.add(button1);   
 13:         frame1.add(panel1);
 14:         
 15:         frame1.setSize(330 , 250);
 16:         frame1.setVisible(true);
 17:     }   
 18: }

در همین کد بالا کاربرد چندین متد را می‌توان فهمید. در خطوط 10-8 یک Frame، یک Panel و دو Button ایجاد کرده‌ایم. در خط 12 دکمه را به پنل و در خط 15 هم Panel را به Frame اضافه کرده‌ایم. این کار را با استفاده از متد ()add انجام داده‌ایم. پس فعلاً با کاربرد متد ()add آشنا شدید. در خط 15 با استفاده از متد ()setSize یک اندازه برای Frame تعیین کرده و در 16 با استفاده از متد ()setVisible فریم را نمایش می‌دهیم. با اجرای برنامه بالا پنجره‌ای به صورت زیر ایجاد می‌شود :
method-property-in-swing-control-01

فرض کنید که می‌خواهیم رنگ پس زمینه Panel را تغییر دهیم. برای این کار از متد ()setBackground استفاده می‌کنیم. این متد برای تغییر رنگ پس زمینه، یک شیء از کلاس Color با عنوان پارامتر قبول می‌کند. در خط 15 کد زیر را بنویسید :

panel1.setBackground(Color.getHSBColor(10, 20, 50));

اعدادی که در داخل متد ()getHSBColor نوشته شده‌اند می‌توانند اعدادی بین 255-0 باشند. برنامه را اجرا و نتیجه را مشاهده کنید :
method-property-in-swing-control-02
البته به جای کد بالا می‌توانید از نام رنگ‌ها هم به صورت زیر استفاده کنید :

panel1.setBackground(Color.BLUE);

حال فرض کنید که می‌خواهیم رنگ نوشته Button1 را به قرمز تغییر دهیم. برای این کار از متد ()setForeground استفاده می‌کنیم. برای این کار به صورت زیر عمل می‌کنیم :

button1.setForeground(Color.red);

کد را اجرا و نتیجه را مشاهده کنید :
method-property-in-swing-control-03
برای تغییر فونت دکمه هم می‌توان از متد ()setFont و یک شیء از کلاس Font استفاده کرد. برای این کار به صورت زیر عمل می‌کنیم :

button1.setFont(new Font("Times New Roman", Font.ITALIC , 20));

همانطور که مشاهده می‌کنید شیء Font سه پارامتر می‌گیرد که اولی نام، دومی حالت و سومی اندازه فونت را مشخص می‌کند. برنامه را اجرا و نتیجه را مشاهده کنید :
method-property-in-swing-control-04
برای تغییر نام یا اختصاص یک نام به یک کنترل هم می‌توان از متد ()setText استفاده کرد. فرض کنید که می‌خواهیم نام دکمه button2 را به SecondButton تغییر بدم. برای این کار به صورت زیر عمل می‌کنیم :

button2.setText("Second Button");

برنامه را اجرا و نتیجه را مشاهده کنید :
method-property-in-swing-control-05
برای غیر فعال کردن یک کنترل هم از متد ()setEnabled استفاده می‌شود. فرض کنید که می‌خواهیم نام دکمه button1 را غیر فعال کنیم. برای این کار کد زیر را بنویسید :

button1.setEnabled(false);

برنامه را اجرا و نتیجه را مشاهده کنید :
method-property-in-swing-control-06

برای تغییر نشانگر ماوس هم می‌توان از متد ()setCursor به همراه یک شیء از کلاس Cursor استفاده کرد. این کلاس دارای ثابت‌هایی هست که در زیر یک مثال از آنها را مشاهده می‌کنید :

button1.setCursor(new Cursor(Cursor.WAIT_CURSOR));

حال اگر برنامه را اجرا کرده و بر روی دکمه با ماوس توقف کنید، مشاهده می‌کنید که شکل نشانگر ماوس تغییر می‌کند. برای اختصاص آیکون به یک کنترل مثلاً دکمه هم از کلاس ImageIcon استفاده می‌شود. من از قبل یک آیکون را در داخل پوشه برنامه قرار داده‌ام. برای اختصاص این آیکون به دکمه بعد از خط 9 کد زیر را بنویسید :

ImageIcon icon = new ImageIcon("C:/FrameDemo/icon.gif", null);

من در کد بالا از آدرس مطلق آیکون استفاده کرده‌ام و ممکن است که این آدرس برای شما به نحو دیگری باشد. سپس سازنده کلاس Button را به صورت زیر تغییر دهید :

JButton button1 = new JButton("Button1",icon);

برنامه را اجرا و نتیجه را مشاهده کنید :
method-property-in-swing-control-07
حال اگر بخواهید آیکون در سمت راست و متن در سپ چپ باشد می‌توانید از متد ()setHorizontalTextPosition و رابط SwingConstants استفاده کنید. این رابط مقادیر مختلفی برای تراز بندی دارد که یکی از آنها LEFT است و متن را در سمت چپ آیکون قرار می‌دهد. کد زیر را بعد از ایجاد دکمه بنویسید :

button1.setHorizontalTextPosition(SwingConstants.LEFT);

برنامه را اجرا کنید :
method-property-in-swing-control-08
برای ایجاد فاصله بین متن و آیکون هم از متد ()setIconTextGap استفاده می‌شود :

button1.setIconTextGap(50);

کد بالا بین متن و آیکون 50 پیکسل فاصله می‌اندازد :
method-property-in-swing-control-09
برای تغییر اندازه کنترل از متد ()setSize استفاده می‌شود. با فرض اینکه همان کد ابتدای درس را در اختیار دارید بعد از خط 12 کدهای زیر را بنویسید :

panel1.setLayout(null);
button1.setSize(200,150);

در مورد متد ()setLayout لازم نیست چیزی بدانید چون در مورد آن در قسمت کار با لایه‌ها توضیح خواهیم داد. فقط در این حد بدانید که پارامتر این متد باید null باشد تا عملکرد متد setSize قابل مشاهده باشد. حال برنامه را اجرا و نتیجه را مشاهده کنید :
method-property-in-swing-control-10
مشاهده می‌کنید که دکمه نسبت به گوشه بالا و سمت چپ کنترل تراز می‌شود. حال اگر بخواهیم دکمه را به طرف چپ یا راست بکشیم باید از متد ()setBounds استفاده کنیم :

button1.setBounds(60,30,200,150);

دو عدد اول به ترتیب مختصات x و y نسبت به گوشه بالا و سمت چپ Panel و دو عدد بعدی هم عرض و ارتفاع کنترل را مشخص می‌کنند :
method-property-in-swing-control-11