الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[مخالف - عنوان غير مناسب :]شرح Layout كيف إستخدامه

مغلق
بدأه issam-ahmed في 15 ديسمبر 2011 · 19 رد · 3,387 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته

إخواني الكرام أنا محتاج شرح لأحد الثلاثة أو إن و جد شرح لهم جميعهم فسيكون أفضل GridLayout و FlowLayout و BorderLayout

أنا حاولت أتعامل معهم لكن لم أعرف على أي أساس يتم التعامل معهم و كيف يتم ترتيب العناصر بشكل تلقائي بإستخدامهم كيف

يضع مربع نص بجانب الليبل أو تحتيه و كيف نضع العنوان و غيره و أنا قمت بترتيب العناصر على لفريم بإستخدام SetBounds(); لكن

أريد أن أعرف طريقة ال Layout و شكراً لكم

#3

مشكور أخي على الشرح لكن أخي هذا شرح غير مبسط و أمكن تشرحلي لو وحدة منهم بالعربي أو بالإنجليزي لكن بشيء من التفصيل

و شكراً إلك

#4

السلام عليكم:

- FlowLayout

يستخدم لترتيب العناصر الأول فالثاني فالثالث وهكذا تلو بعض حسب مساحة الإطار

المبرمج لا يحدد بنفسه ترتيب العناصر وإنما من ينشأ أولا يوضع اولا..

- Grig layout

يتم تقسيم الإطار إلى خلايا

- Border Layout

يتم تقسيم الإطار إلى 5 أجزاء (-وسط- شرق-غرب-شمال-جنوب-)

وتحدد أين تريد وضع الزر أو العنصر في أي جهة..

هذا والله أعلم

في الملف المرفق مثال لكل واحد منهم

Kinds of Layout Managers.rar

1
#5

مشكورين إخواني الكرام

و مشكورة أختي على التفريق بين الأنواع الثلاثة لكن أريد أن أسئل ما هي أفضل طريقة لترتيب العناصر داخل لفريم

في حالة إستخدامنا Java Application و شكراً

تم تعديل هذه المشاركة بواسطة issam-ahmed في 15 ديسمبر 2011 في 20:18

#6
issam-ahmed كتب:

مشكورين إخواني الكرام

و مشكورة أختي على التفريق بين الأنواع الثلاثة لكن أريد أن أسئل ما هي أفضل طريقة لترتيب العناصر داخل لفريم

في حالة إستخدامنا Java Application و شكراً

جزاك الله خيرا-الشكر لله

لا أستطيع أن أقول لك ماهي أفضل طريقة لأن كل واحدة منها لها أهميتها الخاصة..

حسب ما يريده المبرمج..

فمثلا الframe في الصورة يحتوي على عدد 2 من الPanels

كل واحدة لها الlayout الخاص بها( الPanel التي في الأسفل FlowLayout - والتي في الأعلى GridBagLayout )

post-249498-056004100 1323979695_thumb.p

المرفقات
zzzz.png
#7

شكراً إلك أختي و انا فهمت كيف يتم إستخدام layout و أنواعه لكن بقية لدي مشاكل،، حيث أنني قمت بإنشاء 5 panel و جعلت BorderLayout لل Frame

و قسمت الخمسة كالتالي :



f.add(p1,BorderLayout.NORTH);
f.add(p2,BorderLayout.SOUTH);
f.add(p3,BorderLayout.EAST);
f.add(p4,BorderLayout.WEST);
f.add(p5,BorderLayout.CENTER);

لكن لم أستطع التحكم في الحجم يعني مثلاً البنل رقم واحد وضعتها شمال فتظهر في أعلى ال Farme و هنا لا يوجد مشاكل لكن الطول تبعها قليل جداً ومعظم المساحة

يأخذه البنل إلي في الوسط فكيف أستطيع التحكم بالحجم و أنا حاولت أستخدم مثلاً

p1.setSize(100,100);

و لم تظبط و كيف لو إنني أريد أن أضع في الوسط 3 panel أو 5 مثلاً فلن يظبط و الجديد سوف يأخذ مكان القديم!!

و أيضاً عملت p5 ك GridLayout و وضعت به 3 label و لكن كيف لو أردت أن أضع lebel في الأول لوحده و الباقي معاً في السطر الذي يليه ؟؟

و ممكن الصورة التالية توضح مشاكلي، إذا أمكن تسعدوني في حل المشكلة.

121511231223dr1rbi7rj047vzv2ttuqpwo2.jpg

مع الشكر

#8

كنت أقصد أن تضع Panel واحدة وتعمل Border Layout لها مثلا..

ثم تضع العناصر داخل الPanel

لا أعتقد أن هناك مشكلة إذا استخدمت 5 منها..

الأفضل أن تستخدم الGridLayout في هذه الحالة..

مثلا

p2.setLayout(new GridLayout(1,3,1,2));

هل من الممكن أن ترفق الكود؟

1
#9

أختي هذا الكود



package test;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

/**
*
* @author issam
*/
public class Test {

private JFrame f;
private JPanel p1;
private JPanel p2;
private JPanel p3;
private JPanel p4;
private JPanel p5;
private JLabel b1;
private JLabel b2;
private JLabel b3;


public Test()
{
test();

}
public void test()
{
f = new JFrame();
f.setVisible(true);
f.setSize(400, 250);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);

f.setLayout(new BorderLayout(1,1));

p1 = new JPanel();
p1.setBackground(Color.blue);
p2 = new JPanel();
p2.setBackground(Color.pink);
p3 = new JPanel();
p3.setBackground(Color.GREEN);
p4 = new JPanel();
p4.setBackground(Color.RED);
p5 = new JPanel();
p5.setBackground(Color.ORANGE);

f.add(p1,BorderLayout.NORTH);
f.add(p2,BorderLayout.SOUTH);
f.add(p3,BorderLayout.EAST);
f.add(p4,BorderLayout.WEST);
f.add(p5,BorderLayout.CENTER);

p5.setLayout(new GridLayout(3,2));
b1 = new JLabel("issam");
b2 = new JLabel("mohd");
b3 = new JLabel("osama");
p5.add(b1);
p5.add(b2);
p5.add(b3);
}

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
new Test();
}
}


#10

أعتقد أن الكود صحيح بهذه الطريقة لكن ربما أنك لم تضع بيانات بعد في الPanels الأخرى :

post-249498-012138200 1324043302_thumb.p

المرفقات
issam.png

تم تعديل هذه المشاركة بواسطة zainab90 في 16 ديسمبر 2011 في 16:49

1
#11

ممتاز أختي أنا لم أضع بيانات لأنني لم أعتقد إن حجم ال panel يزيد حسب البيانات الموجودة بداخله و إعتقدت إنه

هناك مشكلة بمجرد أن رأيت ظهور ال panels بهذه الطريقة ألف شكر لكي و غلبتك معي.

لكن يبقى أسئلة كثيرة و إستفسارات كثيرة حول ال layout و أعتقد بأنه موضوع كبير و لكن لا أريد أن أبذل مزيد

من الوقت بشأن هذا الموضوع و أهتم بأمور أخرى و يكفي ما إستفدته حتى الآن و هذا بفضل الله

ثم بفضل مجهودكم بارك الله فيكم .

تم تعديل هذه المشاركة بواسطة issam-ahmed في 16 ديسمبر 2011 في 17:42

#12

لا تتردد إذا كان لديك أية استفسارات فكلنا نتعلم .لكن أنصحك بالتدريب العملي كثيرا ,سوف يفيدك.

أتمنى لك التوفيق.

#13

zainab90 كتب:

لا تتردد إذا كان لديك أية استفسارات فكلنا نتعلم .لكن أنصحك بالتدريب العملي كثيرا ,سوف يفيدك.

أتمنى لك التوفيق.

شكراً لكي أختي و بصراحة أنا قمت بعمل برنامج بسيط و هو إدخال رقمين و القيام بعدة عمليات رياضية عليهم

و هي الجمع و الطرح و القسمة و الباقي و الضرب و إظهار النتيجة لكن قمت بترتيب العناصر بإستخدام ميثود



setBounds();

ولكني أردت أن أعمله ب FlowLayout لأنه المفروض أن أعمله بها و لم يشرح لنا المدرس شيء عن Layout

فجربت أن أعمله و لم يظبط و كل العناصر جاءت وراء بعد و لم أعرف أتحكم بها أضع مثلاً العنوان في سطر

لوحده ثم أرتب الباقي كما أريد .

و هذا هو الكود



package jtgui;

import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JLabel;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JOptionPane;

public class Jt extends JFrame {

private JTextField Nu1;
private JTextField Nu2;
private JLabel Tit;
private JLabel NNu1;
private JLabel NNu2;
private JLabel NAns;
private JLabel Icon1;
private JLabel Ans;
private JButton Add;
private JButton Sup;
private JButton Div;
private JButton Mul;
private JButton Rem;
int x=0,y=0;
public Jt() {
super("Java TextField And Button Test");
setSize(425, 250);
setLayout(null);
//setLayout(new FlowLayout(FlowLayout.LEFT));
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);

Nu1 = new JTextField("");
Nu1.setBounds(210, 50, 100, 25);
add(Nu1);
NNu1 = new JLabel("First Number :");
NNu1.setBounds(100, 50, 100, 25);
add(NNu1);

Nu2 = new JTextField("");
Nu2.setBounds(210, 80, 100, 25);
add(Nu2);
NNu2 = new JLabel("Second Number :");
NNu2.setBounds(100, 80, 100, 25);
add(NNu2);

NAns = new JLabel("The Anaswer is:");
NAns.setBounds(90, 110, 100, 25);
NAns.setForeground(Color.red);
add(NAns);

Icon1 = new JLabel(" ");
Icon1.setBounds(330, 65, 100, 25);
add(Icon1);

Tit = new JLabel("JText Field And JButton Sample");
Tit.setBounds(115, 10, 300, 25);
Tit.setForeground(Color.darkGray);
add(Tit);

JLabel Stu = new JLabel("Student: Issam Alshamaly");
Stu.setBounds(20, 180, 200, 25);
Stu.setForeground(Color.red);
add(Stu);

Ans = new JLabel("");
Ans.setBounds(240, 110, 100, 25);
Font font = new Font("Helvetica", Font.BOLD + Font.ITALIC, 16);
Ans.setFont(font);
add(Ans);


Add = new JButton("Add");
Add.setBounds(10, 150, 70, 25);
Add.setForeground(Color.blue);
add(Add);
Add.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent event) {

Ans.setForeground(Color.blue);
ImageIcon select = new ImageIcon(getClass().getResource("select.ico"));
// Icon1= new JLabel(select);
Icon1.setIcon(select);

x = N1();
y = N2();
Ans.setText(Integer.toString(x+y));
}
});
Sup = new JButton("Sub");
Sup.setBounds(90, 150, 70, 25);
Sup.setForeground(Color.CYAN);
add(Sup);
Sup.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent event) {

Ans.setForeground(Color.CYAN);
x = N1();
y = N2();
Ans.setText(Integer.toString(x-y));
}
});
Mul = new JButton("Mul");
Mul.setBounds(170, 150, 70, 25);
Mul.setForeground(Color.ORANGE);
add(Mul);

Mul.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent event) {
Ans.setForeground(Color.ORANGE);
x = N1();
y = N2();
Ans.setText(Integer.toString(x*y));
}
});


Div = new JButton("Div");
Div.setBounds(250, 150, 70, 25);
Div.setForeground(Color.green);
add(Div);
Div.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent event) {

Ans.setForeground(Color.green);
x = N1();
y = N2();
Ans.setText(Integer.toString(x/y));
}
});
Rem = new JButton("Rem");
Rem.setBounds(330, 150, 70, 25);
Rem.setForeground(Color.magenta);
add(Rem);
Rem.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent event) {
Ans.setForeground(Color.magenta);

x = N1();
y = N2();
Ans.setText(Integer.toString(x%y));
}
});






}

public int N1() {
int N1 = 0;
if (Nu1.getText().equals(""))
{
JOptionPane.showMessageDialog(null, "You Must Enter any an Integer", "Input Error First Number", JOptionPane.ERROR_MESSAGE);
Nu1.setText("0");
Nu2.setText("0");
}

try {
N1 = Integer.parseInt(Nu1.getText());



} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "You Must Enter just an Integer","Input Error First Number", JOptionPane.ERROR_MESSAGE);
}
return N1;
}
public int N2() {
int N2 = 0;
if (Nu2.getText().equals(""))
{
JOptionPane.showMessageDialog(null, "You Must Enter any an Integer", "Input Error Second Number", JOptionPane.ERROR_MESSAGE);
Nu1.setText("0");
Nu2.setText("0");
}

try {

N2 = Integer.parseInt(Nu2.getText());


} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "You Must Enter just an Integer","Input Error Second Number", JOptionPane.ERROR_MESSAGE);
}
return N2;
}
}


Main



Jt jt = new Jt();
jt.setVisible(true);

و هنا صورة بالنتجية

12161107122827u9av9yipy2vkaf8is.png

و مرفق البرنامج إذا أمكن أو هل لديكي فكرة أو أراء معينة لكي أعيد ترتيبة بشيء أخر خلاف setBounds و بسهولة أكثر، بالإضافة إنني

حاولت أضيف صورة أو أيقونة بإستخدام الكود



ImageIcon select = new ImageIcon(getClass().getResource("select.ico"));
Icon1= new JLabel(select);

ولم يظبط معي و كنت حابب أن أطرح مشكلة الصورة في موضوع آخر و لكن إذا لديكي حلها فلا مشكلة .

مع الشكر

JTGUI.rar

تم تعديل هذه المشاركة بواسطة issam-ahmed في 16 ديسمبر 2011 في 18:36

#14

عمل جميل

ممكن تعمل مجموعة Panels

وتضع كل مجموعة من العناصر لوحدها في Panel

مثلا تضع الأزرار في Panel واحدة

وتحط layout Flow

لم أجربها بعد

تم تعديل هذه المشاركة بواسطة zainab90 في 16 ديسمبر 2011 في 19:36

#15
zainab90 كتب:

عمل جميل

ممكن تعمل مجموعة Panels

وتضع كل مجموعة من العناصر لوحدها في Panel

مثلا تضع الأزرار في Panel واحدة

وتحط layout Flow

لم أجربها بعد

ممكن تظبط سوف أجربها و سوف أرد بعد أن أجربها إن شاء الله

هل لديكي أي إقتراحات بشأن الصورة أو الأيقونة ؟ حيث كنت أريد أن أضيفها لتدل على العملية الحسابية.

مع الشكر

تم تعديل هذه المشاركة بواسطة issam-ahmed في 16 ديسمبر 2011 في 19:46

#16

أعتقد بإمكانك إضافة الصورة عن طريق:

   private ImageIcon icon = new ImageIcon("image/name.gif");
add(new JLabel(icon));

تم تعديل هذه المشاركة بواسطة zainab90 في 16 ديسمبر 2011 في 20:43

#17
zainab90 كتب:

أعتقد بإمكانك إضافة الصورة عن طريق:

   private ImageIcon icon = new ImageIcon("image/name.gif");
add(new JLabel(icon));

لم يظبط أختي :( لا يظهر خطأ و لكن الكود لا يعمل أي لا يظهر جديد و كأنه غير موجود

#18

جرب هذه الطريقة

JLabel m=new JLabel();
		m.setIcon(new ImageIcon(getClass().getResource("/packageName/Imagename.gif")));

ضع الصورة أو الأيقونة في نفس المسار -في ال package نفسها

تم تعديل هذه المشاركة بواسطة zainab90 في 17 ديسمبر 2011 في 19:58

1
#19

افتح موضوعاً لكل سؤال

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#20

الأخ الكريم/الأخت الكريمة

السلام عليكم ورحمة الله وبركاته

مرحباً بكم في منتدى الفريق العربي للبرمجة

تأسف إدارة المنتدى لغلق الموضوع وذلك لمخالفته قوانين المشاركات. فقرة اختيار عنوان مناسب لمحتوى الموضوع.

قواعد طرح المشاركات

/index.php?showtopic=29343

شاكرين لكم حُسن تعاونكم

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…