کنترل JButton
وقتی که بر روی کنترل Button کلیک می کنیم دستوراتی اجرا می شود، و این معمولترین استفاده ای است که از این کنترل می شود. دکمه ها به نوعی برای تایید یا لغو یک عمل و یا باز کردن کادرهای محاوره ای به کار می روند. سازنده این کلاس به صورت های زیر مقداردهی می شود :
JButton(َAction); JButton(String); JButton(Icon); JButton(String, Icon);
کنترل Button دارای خواصی است که در جدول زیر تعدادی از این آنها ذکر شده است :
خواص | توضیح | |
enabled | اگر مقدار این خاصیت false باشد بر روی button نمی توان کلیک کرد. | |
text | عنوانی است که به کنترل اختصاص داده می شود. | |
visible | مشخص می کند که آیا کنترل button در روی فرم قابل رویت باشد یا نه |
فقط با ویرایش خواص یک button نمی توان از آن استفاده کرد. بلکه کنترل دکمه برای انجام برخی اعمال نیاز به واکنش به رویدادها دارد. در زیر معمولترین رویدادهای کنترل button آمده است.
رویداد | توضیح | |
actionPerformed | وقتی روی می دهد که بر روی دکمه کلیک کنید. | |
mouseExited | وقتی روی می دهد که ماوس کنترل را ترک کند. | |
stateChanged | وقتی روی می دهد که مکان دکمه تغییر کند. | |
mousePressed | وقتی روی می دهد که نشانگر ماوس بر روی کنترل باشد و دکمه ماوس رو به پایین فشار داده شود. | |
mouseEntered | وقتی روی می دهد که ماوس وارد کنترل دکمه می شود. | |
mouseReleased | وقتی روی می دهد که دکمه ماوس فشار داده شده و رها شود. |
همانطور که قبلا مشاهده کردید رویداد پیشقرض کنترل دکمه رویداد actionPerformed می باشد. اجازه دهید که با ایجاد برنامه هایی با رویدادهای دیگر نیز آشنا شویم.می خواهیم برنامه ای بنویسیم که در آن وقتی که با ماوس بر روی یک دکمه رفتیم و یا نشانگر ماوس را از آن خارج کردیم متن داخل دکمه تغییر کند. به کد زیر توجه کنید :
1: import javax.swing.*; 2: import java.awt.event.*; 3: 4: public class FrameDemo 5: { 6: public static void main(String[] args) 7: { 8: JFrame frame1 = new JFrame("Button Demo"); 9: frame1.setLayout(null); 10: final JButton button1 = new JButton("buttonSample"); 11: 12: button1.setBounds(85, 80, 157, 60); 13: 14: MouseAdapter MouseAdapter1 = new MouseAdapter() 15: { 16: @Override 17: public void mouseEntered(MouseEvent evt) 18: { 19: button1.setText("Mouse has entered!"); 20: } 21: 22: @Override 23: public void mouseExited(MouseEvent evt) 24: { 25: button1.setText("Mouse has Left!"); 26: } 27: }; 28: 29: button1.addMouseListener(MouseAdapter1); 30: 31: frame1.add(button1); 32: 33: frame1.setSize(356 , 263); 34: frame1.setVisible(true); 35: } 36: }
در خط 8 و 9 یک فریم ایجاد کرده و هیچ لایه بندی برای آن در نظر نمی گیریم. در خط 10 یک دکمه ایجاد کرده و در خط 12 آن را نسبت به گوشه بالا و سمت چپ فریم تراز می کنیم. حال نوبت به قسمت مهم برنامه می رسد. همانطور که می دانید برای اینکه رویدادی اتفاق بیفتد باید یک Interface توسط یک کلاس پیاده سازی شود. کلاسی که قرار است رابط را پیاده سازی کند کلاس MouseAdapter است که سه رابط MouseWheelListener، MouseListener و MouseMotionListener را پیاده سازی می کند. در نتیجه این پیاده سازی باید کدهایی برای بدنه متدهای این رابط ها هم در نظر گرفته شود. چون ما با دو متد ()MouseEntered و ()MouseExited سر و کار داریم پس باید کدهای بدنه این دو متد را هم فراهم کنیم. پس در کل یک شی از کلاس MouseAdapter در خط 14 ایجاد کرده و در دو متد ()MouseEntered و ()MouseExited در خطوط 19 و 25 متن داخل دکمه را تغییر می دهیم. حال می خواهیم این شی را به دکمه بچسبانیم. این کار را با استفاده از متد ()addMouseListener در خط 29 انجام می دهیم. در خط 31 هم دکمه را به فریم اضافه می کنیم.
حال برنامه را اجرا کنید. مشاهده می کنید که با قرار گرفت اشاره گر ماوس بر روی کنترل button خاصیت text آن تغییر می کند. و از طرف دیگر وقتی که اشاره گر از کنترل دکمه دور می شود این خاصیت دوباره تغییر می کند.