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

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

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

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

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

مقدمه مختصری بر Layout Manager_بخش سوم

BoxLayout

کلاس javax.swing.BoxLayout این اجازه را می دهد که کامپوننت های چندین پنجره بصورت افقی یا عمودی قرار داده شوند. بلعکس با استفاده از FlowLayout، زمانی که پنجره با BoxLayout تغییر اندازه داده شده است کنترل های آن بسته بندی ندارد و در عوض با استفاده از GridLayout با BoxLayout کنترل های پنجره می تواند اندازه های متفاوتی داشته باشد.

دو خط کد زیر تنظیم عمودی را برای Jpanel با استفاده از BoxLayout نمایش می دهد. برای کوتاه تر شدن کد، یک متغییر برای ذخیره یک ارجاع به شی BoxLayout تعریف نکردیم بلکه ایجاد کردیم یک نمونه از این شی و بلافاصله آنرا بعنوان یک آرگومان به متد setLayout() پاس کردیم.

JPanel p1= new JPanel();
setLayout(new BoxLayout(p1, BoxLayout.Y_AXIS));

اگر شما چندین button به پنل p1 اضافه کنید، همه آنها یکی تحت دیگری نمایش داده می شود.

شما می توانید از ترکیب انواعی از پیاده سازی افقی و عمودی BoxLayout برای ساخت یک UI نسبتا پیچیده تر استفاده کنید. صفحه ای را تصور کنید که دارای چندین آیتم در بالای پنجره،تعدادی بصورت عمودی در سمت چپ، و مابقی در دید اصلی پنجره واقع شده است. شما می توانید از BorderLayout بهمراه  BoxLayout افقی برای  سمت شمالی، یک پنل بهمراه BoxLayout عمودی برای سمت شرقی استفاده کنید.

GridBagLayout

در این بخش با یکی دیگر از روش های طراحی ماشین حساب آشنا خواهید شد، استفاده از java.awt.GridBagLayout بجای استفاده از ترکیب پنل ها و Layoutهای متفاوت. GridBagLayout یک Grid پیشرفته می باشد که اجازه سلول ها با اندازه های متفاوت را در اختیار شما قرار می دهد. GridBagLayout با کلاس های دیگری بنام GridBagConstraints کار می کند.

Constraintها تنها صفات یک سلول می باشند و شما مجبورید آنها را بصورت جداگانه با بقیه تنظیم کنید. تمامی Constraintها برای یک سلول بایستی قبل از اینکه شما یک کامپوننت را در آن سلول قرار می دهید تنظیم شود. بعنوان مثال یکی از صفات Constraint، gridwidth نام دارد که به شما اجازه می دهد که یک سلول به وسعت چندین سلول دیگر بسازید.

هنگام کار با یک grid layout شما بایستی ابتدا ایجاد کنید کنید یک نمونه از آبجکت constraint، و آنگاه مقادیر را برای خواص آن قرار دهید، سپس می توانید یک کامپوننت UI به سلول در ظرف خود اضافه کنید.

مثال: ایجاد constraintها برای GridBagLayout

//Set the GridBagLayout for the window’s content pane
GridBagLayout gb = new GridBagLayout();
this.setLayout(gb);
// Create an instance of the GridBagConstraints
// You’ll have to repeat these lines for each component
// that you’d like to add to the grid cell
GridBagConstraints constr = new GridBagConstraints();
//setting constraints for the Calculator’s displayField:
// x coordinate in the grid
constr.x=0;
// y coordinate in the grid
constr.y=0;
// this cell has the same height as other cells
constr.gridheight =1;
// this cell is as wide as 6 other ones
constr.gridwidth= 6;
// fill all space in the cell
constr.fill= constr.BOTH;
// proportion of horizontal space taken by this
// component
constr.weightx = 1.0;
// proportion of vertical space taken by this component
constr.weighty = 1.0;
// position of the component within the cell
constr.anchor=constr.CENTER;
displayField = new JTextField();
// set constrains for this field
gb.setConstraints(displayField,constr);
// add the text field to the window
windowContent.add(displayField);

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