کنترل ها
کنترلها، اجزای بصری هستند که، به وسیلهی آنها محیطهای گرافیکی (GUI) ساخته میشود. هرچیزی که شما در یک محیط گرافیکی میبینید یک کنترل است، حتی Frame نیز یک کنترل است. کنترلها در دستههای مختلفی در قسمت نوار ابزار قرار دارند که در محیط Netbeans و در قسمت Palette قائل مشاهده هستند :
بیشتر کنترلها از کلاس JComponent ارث بری میکنند که دارای خواص، متدها و رویدادهای متفاوتی برای آنها میباشد.
خواص کنترلها
در قسمت زیر بعضی از خاصیتهای مفید کلاس JComponent را مشاهده میکنید.
خاصیت | توضیح |
accessible name | نامی که کنترل به وسیله آن قابل دسترسی است. |
accessible parent | نام والد کنترل را نشان میدهد. |
background | رنگ قسمت زمینهی کنترل را مشخص میکند. |
border | حاشیه کنترل را مشخص میکند. |
contentareafilled | مشخص میکند که آیا کنترل رنگ پس زمینه داشته باشد یا transparent باشد. |
cursor | نوع نشانگر ماوس را مشخص میکند |
disabledicon | آیکون کنترل را زمانی که کنترل غیر فعال است تعیین میکند. |
enabled | این قسمت مشخص میکند که کنترل فعال است یا نه. اگر مقدار آن False باشد کنترل غیرفعال میشود. |
foreground | رنگ پیش زمینهی کنترل و همچنین رنگ قلم کنترل را مشخص میکند. |
focusable | مشخص میکند که یک کنترل میتواند توسط دکمهی Tab مورد دستیابی قرار گیرد یا خیر. |
font | نوع و اندازه فونت کنترل را مشخص میکند. |
maximumsize | حداکثر اندازهای که کنترل میتواند داشته باشد را مشخص میکند. |
margin | فاصلهی بین لبههای کنترل مربوطه و لبهی کنترل دیگر را مشخص میکند. |
minimumsize | کمترین سایز کنترل را مشخص میکند. |
name | نام کنترل را مشخص میکند. این نام برای اشاره به کنترل در زمان کد نویسی استفاده میشود. |
parent | والد کنترل را مشخص میکند. |
text | متنی که در داخل کنترل قرار میگیرد. |
Horizontal Size | عرض کنترل براساس پیکسل را مشخص میکند. |
Vertical Size | ارتفاع کنترل براساس پیکسل را مشخص میکند. |
مهمترین خاصیت در جدول بالا خاصیت name است. این مشخصه به شما اجازه میدهد که از آن نام برای ارجاع به کنترل در قسمت کد نویسی استفاده کنید. در این قسمت به بحث در مورد بعضی از مشخصههایی که در بیشتر کنترلها وجود دارند میپردازیم.
رویدادهای کنترل
در جدول پایین شما برخی از رویدادهای مفید که بین بیشتر کنترلهای رایج هستند را مشاهده میکنید.
رویداد | توضیح |
actionPerformed | این رویداد وقتی رخ میدهد که بر روی کنترل با دکمهی سمت چپ ماوس کلیک شود. |
componentResized | این رویداد وقتی رخ میدهد که اندازه کنترل تغییر کند. |
componentMoved | این رویداد وقتی رخ میدهد که کنترل حرکت داده شود. |
mouseDragged | زمانی که عملیات Drag & Drop بر روی کنترل انجام میشود این رویداد رخ میدهد. |
focusGained | زمانی رخ میدهد که Focus روی کنترل قرار گیرد. |
keyPressed | این رویداد زمانی رخ میدهد که focus بر روی کنترل باشد و کلیدی از روی صفحه کلید فشرده و رها شود. |
keyReleased | این رویداد زمانی رخ میدهد که focus بر روی کنترل باشد و کلیدی که از روی صفحه کلید فشرده شده، رها شود. این رویداد بعد از دو رویداد قبلی رخ میدهد. |
focusLost | وقتی که کنترل Focus خود را از دست بدهد این رویداد رخ میدهد. |
mouseClicked | یک حالت پیشرفتهتر از رویداد actionPerformed است. کلیک کردن میتواند شامل فشردن کلیدهای صفحهی کلید نیز باشد. ولی اگر شما نیاز به اطلاعاتی نظیر، تعداد کلیک بر روی کنترل، چرخیدن دکمه چرخندهی ماوس و … باشید باید از این رویداد استفاده کنید |
mousePressed | این رویداد زمانی رخ میدهد که دکمهای از ماوس در داخل کنترل پایین نگه داشته شود. |
mouseEntered | زمانی که مکان نما به یک کنترل وارد میشود این رویداد رخ میدهد. |
mouseExited | این رویداد زمانی رخ میدهد که مکان نما کنترل را ترک کند. |
mouseMoved | این رویداد زمانی رخ میدهد که مکان نما وقتی در داخل محدودهی کنترل است حرکت کند. |
mouseReleased | این رویداد زمانی رخ میدهد که دکمهای از ماوس را که قبلاً فشردهایم، در داخل کنترل رها کنیم. |
mouseWheelMoved | این رویداد زمانی رخ میدهد که بر روی کنترل Focus باشد و دکمه چرخنده ماوس حرکت کند. |
در مورد بیشتر رویدادهای بالا در بخشهای آینده صحبت خواهیم کرد.
متدهای کنترل
به استثنای container های سطح بالا، همه کنترلهای Swing ی که نام آنها با حرف J شروع میشود از کلاس JComponent ارث بری میکنند. به عنوان مثال JPanel ،JScrollPane ،JButton و JTable. به این نکته توجه کنید که JFrame و JDialog از container های سطح بالا ارث بری میکنند.
کلاس JComponent از کلاس Container و این کلاس هم به نوبه خود از کلاس Component مشتق میشود. از آنجاییکه کلاس JComponent کلاس پایه کنترلهای Swing است، در نتیجه کنترلهای Swing از متدهای این کلاس استفاده میکنند. در جدول زیر متدهای پر کاربرد این کلاس ذکر شده است :
متد | کاربرد | |
setBorder() getBorder() |
برای به دست آوردن و تعیین حاشیه (Border) کنترل به کار میرود. | |
setForeground() setBackground() |
برای تعیین رنگ فونت و پس زمینه کنترل به کار میرود. | |
getForeground() getBackground() |
برای به دست آوردن رنگ فونت و پس زمینه کنترل به کار میرود. | |
setFont() getFont() |
برای به دست آوردن و تعیین فونت کنترل به کار میرود. اگر کنترل فونت نداشته باشد از فونت کنترل والد آن استفاده میشود. | |
setCursor() getCursor() |
برای به دست آوردن و تعیین نشانگر ماوس زمانیکه ماوس بر روی کنترل میرود به کار میرود. | |
setToolTipText() | برای نمایش یک متن در tooltip کنترل به کار میرود. | |
setName() getName() |
برای به دست آوردن و تعیین نام کنترل به کار میرود. | |
isShowing() | تشخیص میدهد که آیا کنترل در صفحه نمایش داده شده است یا نه؟ این بدین معناست که خاصیت visible کنترل و والد آن باید true باشد. | |
setEnabled() isEnabled() |
برای تشخیص و تعیین فعال بودن کنترل به کار میرود. | |
setVisible() isVisible() |
برای تشخیص و تعیین نمایش و عدم نمایش کنترل به کار میرود. | |
add() | برای اضافه کردن یک کنترل به container به کار میرود. | |
remove() removeAll() |
برای حذف یکی از یا همه کنترلهای یک container به کار میرود. | |
getTopLevelAncestor() | برای به دست آوردن بالاترین یک کنترل به کار میرود. | |
getParent() | برای به دست آوردن اولین یک کنترل به کار میرود. | |
getComponentCount() | برای به دست آوردن تعداد کنترلهای یک container به کار میرود. | |
getComponent() getComponents() |
برای به دست آوردن یکی از یا همه کنترلهای یک به کار میرود. | |
getComponentZOrder() | بعد سوم (z-order) یک کنترل در داخل یک را بر میگرداند. بالاترین کنترل دارای بعد سوم کوچکتر (عدد کمتر) و پایینترین کنترل دارای بعد سوم بزرگتری است. | |
setPreferredSize() setMaximumSize() setMinimumSize() |
برای تعیین بهترین اندازه کنترل در مقیاس پیکسل به کار میرود. اندازه کنترل نباید بزرگتر از maximum size و یا کوچکتر از minimum size باشد. | |
getPreferredSize() getMaximumSize() getMinimumSize() |
برای به دست آوردن maximum size و minimum size کنترل در مقیاس پیکسل به کار میرود. | |
setAlignmentX() setAlignmentY() |
برای تعیین تراز بندی کنترل نسبت به کنترلهای دیگر به کار میرود. مقداری کهایم متد میگیرد عددی بین 0 و 1 است. | |
getAlignmentX() getAlignmentY() |
برای به دست آوردن تراز بندی کنترل نسبت به کنترلهای دیگر به کار میرود. | |
getWidth() getHeight() |
برای به دست آوردن عرض و ارتفاع یک کنترل بر حسب پیکسل به کار میرود. | |
getSize() getSize() |
برای به دست آوردن اندازه کنترل بر حسب پیکسل به کار میرود. | |
getX() getY() |
برای به دست آوردن نقطه x و y کنترل نسبت به گوشه بالا و سمت چپ کنترل والد آن بر حسب پیکسل به کار میرود. | |
getBounds() | برای به دست آوردن محدوده یک کنترل (عرض و ارتفاع) بر حسب پیکسل به کار میرود. | |
getLocation() | برای به دست آوردن مکان یک کنترل نسبت به گوشه بالا سمت چپ کنترل والد آن بر حسب پیکسل به کار میرود. | |
getLocationOnScreen() | مکان نسبی را نسبت به گوشه بالا سمت چپ صفحه نمایش بر میگرداند. | |
getInsets() | اندازه حاشیه کنترل را بر میگرداند. | |
setLocation(Point) | مکان کنترل را نسب به گوشه بالا سمت چپ کنترل والد تعیین میکند. | |
setSize() | اندازه کنترل را بر مبنای پیکسل تعیین میکند. | |
setBounds() | اندازه و مکان نسبی کنترل را نسبت به گوشه بالا سمت چپ کنترل والدش مشخص میکند. |
به این نکته توجه کنید که این کلاس دارای متدهای بیشتری است که در این درس به این تعداد بسنده کردهایم. در درسهای آینده با کاربرد این متدها بیشتر آشنا میشوید.