کنترل ها

کنترل‌ها، اجزای بصری هستند که، به وسیله‌ی آنها محیط‌های گرافیکی (GUI) ساخته می‌شود. هرچیزی که شما در یک محیط گرافیکی می‌بینید یک کنترل است، حتی Frame نیز یک کنترل است. کنترل‌ها در دسته‌های مختلفی در قسمت نوار ابزار قرار دارند که در محیط Netbeans و در قسمت Palette قائل مشاهده هستند :
controls-in-swing-08
بیشتر کنترل‌ها از کلاس 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() اندازه و مکان نسبی کنترل را نسبت به گوشه بالا سمت چپ کنترل والدش مشخص می‌کند.

به این نکته توجه کنید که این کلاس دارای متدهای بیشتری است که در این درس به این تعداد بسنده کرده‌ایم. در درس‌های آینده با کاربرد این متدها بیشتر آشنا می‌شوید.