شما می توانید با ارسال ایمیل خود ، بصورت رایگان مشترک شده و از بروزسانی مطلع شوید.

ایمیل خود را وارد کنید:

اوراکل (ADF(Application Development Framework یک چارچوب(Framework)  کلی می باشد که برروی استانداردهای Java EE و تکنولوژی های Open Source جهت سادگی و پیاده سازی سریع تر برنامه های Java EE ایجاد شده است که کاملا توسعه پذیر و قابل تنظیم بوسیله افزودن یا اصلاح کتابخانه ها می باشد. ADF وظایف را از طریق ایجاد سرویس […]

CardLayout پنجره ای را در نظر بگیرید که شامل چندین پنل می باشد که در یک زمان فقط یکی از این پنل ها قابل مشاهده می باشد،با استفاده از کلاس java.awt.CardLayout شما می توانید کامپوننتی را ایجاد کنید که فقط یکی از این پنل ها را در یک زمان نمایش دهد، مانند شکل زیر: زمانی […]

اطلاعات سخت افزاری CPU اطلاعات CPU شامل جزئیاتی  مثل معماری ، نام سازنده ، مدل ، تعداد هسته ها ، سرعت هرکدام از هسته ها و غیره است. برای دسترسی به چنین جزئیاتی درباره سخت افزار CPU در لینوکس، تعداد بسیار اندکی کامند برای این منظور وجود دارد که ما در اینجا بطور مختصر تعدادی […]

مقدمه ای بر رابط گرافیکی کاربر(GUI)

این روزها مردم  به کار کردن با برنامه های کاربردی که دارای رابط های کاربری غنی می باشند خو گرفته شده اند. اگر شما برنامه های کاربردی اینترنت را توسعه می دهید، javaFX جدیدترین پلتفرم برای توسعه می باشد که توسط اوراکل پیشنهاد شده است. اما جاوا خودش یک کتابخانه ای از کامپوننت ها بنام Swing را پیشنهاد می دهد، که برای ساختن رابط های گرافیکی کاربر برای برنامه های کاربردی Desktop و همچنین برنامه وب بنام applet استفاده شده است.

Swing

   نسخه اصلی جاوا یک کتابخانه بسیار اساسی از UI بنام جعبه ابزار انتزاعی(AWT) ارائه کرده است. چندسال بعد یک جعبه ابزار جدید بنام Swing معرفی شد. امروزه  برنامه نویسان سعی به ایجاد UIهای می کنند که بومی با سیستم  عامل ها باشند، خواه Windows ،Mac،Android…در نهایت سهم بازار از UIهای Swing-Based کاسته شد. اما هنوزم توسط شرکت های بزرگ استفاده می شود.

Swing به شما ارائه می دهد هر آنچه شما به ساخت UIها در جاوا احتیاج دارید. کنترل هایی برای نمایش  buttonها ،drop-downها،gridها،scrollbarها و بهمین ترتیب وجود دارد. معمولا شما ترکیبی از کنترل ها در غالبی نظیر JPanel استفاده می کنید، که پشتیبانی می کند ویزگی های گوناگونی که کنترل ها را قادر به مرتب شدن می کند همانطور که شما تصور می کنید.

کلاس های swing در پکیج javax.swing  واقع شده اند. در مثال زیر یک بردار بوسیله کلاس Jframe ایجاد شده است:

import javax.swing.JFrame;
public class HelloWorld extends JFrame {
public HelloWorld(){
setSize(200,300);
setTitle("Hello World");
setVisible(true);
}
public static void main(String[] args) {
HelloWorld myHello = new HelloWorld();
}
}

سازنده این نوع از Hello World عنوان و اندازه این پنجره رو مشخص می کند و آن را قابل دیدن می نماید. این برنامه را اجرا کنید خواهید دید که یک پنجره کوچک و خالی نمایش داده می شود.

Jframe مانند ظرفی می باشد که کنترل های UI را نگه داری می کند، که بایستی ابتدا معرفی شده باشد سپس به ظرف اضافه شود. برای مثال برای اضافه کردن کنترل Button شما می توانید دو خط زیر را به سازنده اضافه نمایید.

JButton myButton = new JButton ("Click me");
add(myButton);

این کد کار خواهد کرد اما اندازه دکمه مشخص نیست. بدون دستورات طراحی تمام شکل قبلی توسط Button اشغال خواهد شد.

معمولا JFrame شامل برخی container دیگر، از جمله JTable,JList,Jbutton می باشد. Swingجاوا بهمراه دارد مدیریت های طراحی یا Layout Managers که به آرایش مناسب کنترل ها کمک می کند.

یک نمونه فرایند کدنویسی که ایجاد می کند یک JFrame که شامل JPanel میباشد،بصورت زیر می باشد:

۱_ایجاد یک JPanel

۲_گماردن یک Layout Manager به آن

۳_معرفی تعدادی کنترل Swing و اضافه کردن آنها به این کنترل

۴_اضافه کردن پنل به JFrame بوسیله فراخوانی متد()setContentPane

۵_تعیین اندازه قاب و قابل رویت کردن آن.

شما می توانید LayoutManagerهای مختلف را به containerهای خود برای ایجاد پنجره های بسیار پیچیده اختصاص دهید. اما نمایش یک پنجره با اجزای طراحی شده تنها نیمی از کار است. زیرا این کنترل ها بایستی چگونگی پاسخدهی به رویدادهای گوناگون را بدانند. مانند کلیک روی یک دکمه.

Layout Managers یا نحوه چیدمان اجزا در پنجره

ساده ترین LayoutManager ، FlowLayout می باشد که کامپوننت ها را در یک ردیف قرار می دهد. اگر فضای افقی در Container خیلی کوچک باشد FlowLayout از سطرهای چندگانه استفاده می کند.

یک ماشین حساب ساده با استفاده از FlowLayout

بهترین راه برای یادگیری مدیریت Layoutها استفاده از آنها در تمرین است. بیایید یک UI برای یک ماشین حساب ساده ایجاد کنیم که جمع دو عدد و نتیجه آنرا نمایش دهد. ب همین دلیل در Eclipse یک کلاس بنام SimpleCalculator ایجاد می کنیم :

package lesson1;
import javax.swing.*;
import java.awt.FlowLayout;
public class SimpleCalculator {
public static void main(String[] args) {
// Create a panel
JPanel windowContent= new JPanel();
// Set a layout manager for this panel
FlowLayout fl = new FlowLayout();
windowContent.setLayout(fl);
// Create controls in memory
JLabel label1 = new JLabel("Number 1:");
JTextField field1 = new JTextField(10);
JLabel label2 = new JLabel("Number 2:");
JTextField field2 = new JTextField(10);
JLabel label3 = new JLabel("Sum:");
JTextField result = new JTextField(10);
JButton go = new JButton("Add");
// Add controls to the panel
windowContent.add(label1); windowContent.add(field1);
windowContent.add(label2);
windowContent.add(field2);
windowContent.add(label3);
windowContent.add(result);
windowContent.add(go);
// Create the frame and add the panel to it
JFrame frame = new JFrame("My First Calculator");
// Add the panel to the top-level container
frame.setContentPane(windowContent);
// set the size and make the window visible
frame.setSize(400,100);
frame.setVisible(true);
}
}

برنامه را کامپایل و اجرا کنید و مشاهده خواهید کرد که بهترین شکل ماشین حساب را ممکن است نمایش ندهد اما چگونگی استفاده از FlowLayout را نشان می دهد. در بخش های آینده شما نمایش بهتری را به کمک LayoutManager های مناسب ایجاد خواهید کرد.

گوشه پنجره را گرفته و آنرا گسترش دهید، خواهید دید که FlowLayout چگونه شروع به جابجایی کنترل ها می کند، سعی به پر کردن ناحیه خالی می کند. اگر شما یک پنجره ای با پهنای مناسب ایجاد کنید، تمام اجزا در یک ردیف جا خواهد شد.

LayoutManagerها تضمین خواهد کرد که محتوای یک container بهتر بنظر برسد البته با صرف نظر کردن از اندازه جاری پنجره.

دیدگاه خود را به ما بگویید.