diff --git a/Programmierung2/src/GUIAnwendungen/Gridlayout.java b/Programmierung2/src/GUIAnwendungen/Gridlayout.java new file mode 100644 index 0000000..3ff625f --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/Gridlayout.java @@ -0,0 +1,46 @@ +package GUIAnwendungen; +/* GridLayout + * - يستخدم لترتيب الأشياء التي نضيفها كجدول يتألف من أسطر و أعمدة متساوية الحجم. + */ +import javax.swing.JFrame; +import javax.swing.JButton; +import java.awt.GridLayout; +public class Gridlayout { + + public static void main(String[] args) { + + JFrame frame = new JFrame("GridLayout demo"); // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من + // الكلاس + frame.setSize(300, 300); // هنا قمنا بتحديد حجم النافذة. عرضها 300 و طولها 300 + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج + frame.setLayout(new GridLayout(3, 3,10,10)); // لترتيب الأشياء التي نضيفها بداخلها GridLayout هنا جعلنا + // النافذة تستخدم الـ + + // هنا قمنا بتعريف 9 أزرار + JButton b1 = new JButton("1"); + JButton b2 = new JButton("2"); + JButton b3 = new JButton("3"); + JButton b4 = new JButton("4"); + JButton b5 = new JButton("5"); + JButton b6 = new JButton("6"); + JButton b7 = new JButton("7"); + JButton b8 = new JButton("8"); + JButton b9 = new JButton("9"); + + // هنا قمنا بإضافة الأزرار في النافذة + frame.add(b1); + frame.add(b2); + frame.add(b3); + frame.add(b4); + frame.add(b5); + frame.add(b6); + frame.add(b7); + frame.add(b8); + frame.add(b9); + + // هنا جعلنا النافذة مرئية + frame.setVisible(true); + + } + +} diff --git a/Programmierung2/src/GUIAnwendungen/Layouts/AlleLayoutsKlassen/BorderLayout.pdf b/Programmierung2/src/GUIAnwendungen/Layouts/AlleLayoutsKlassen/BorderLayout.pdf new file mode 100644 index 0000000..1efbb03 Binary files /dev/null and b/Programmierung2/src/GUIAnwendungen/Layouts/AlleLayoutsKlassen/BorderLayout.pdf differ diff --git a/Programmierung2/src/GUIAnwendungen/Layouts/AlleLayoutsKlassen/FlowLayout.pdf b/Programmierung2/src/GUIAnwendungen/Layouts/AlleLayoutsKlassen/FlowLayout.pdf new file mode 100644 index 0000000..efa44ae Binary files /dev/null and b/Programmierung2/src/GUIAnwendungen/Layouts/AlleLayoutsKlassen/FlowLayout.pdf differ diff --git a/Programmierung2/src/GUIAnwendungen/Layouts/AlleLayoutsKlassen/GridBagLayout.pdf b/Programmierung2/src/GUIAnwendungen/Layouts/AlleLayoutsKlassen/GridBagLayout.pdf new file mode 100644 index 0000000..dd798bb Binary files /dev/null and b/Programmierung2/src/GUIAnwendungen/Layouts/AlleLayoutsKlassen/GridBagLayout.pdf differ diff --git a/Programmierung2/src/GUIAnwendungen/Layouts/AlleLayoutsKlassen/GridLayout.pdf b/Programmierung2/src/GUIAnwendungen/Layouts/AlleLayoutsKlassen/GridLayout.pdf new file mode 100644 index 0000000..90c920d Binary files /dev/null and b/Programmierung2/src/GUIAnwendungen/Layouts/AlleLayoutsKlassen/GridLayout.pdf differ diff --git a/Programmierung2/src/GUIAnwendungen/Layouts/AlleLayoutsKlassen/GroupLayout.pdf b/Programmierung2/src/GUIAnwendungen/Layouts/AlleLayoutsKlassen/GroupLayout.pdf new file mode 100644 index 0000000..4cf9ae9 Binary files /dev/null and b/Programmierung2/src/GUIAnwendungen/Layouts/AlleLayoutsKlassen/GroupLayout.pdf differ diff --git a/Programmierung2/src/GUIAnwendungen/Layouts/Borderlayout.java b/Programmierung2/src/GUIAnwendungen/Layouts/Borderlayout.java new file mode 100644 index 0000000..290c624 --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/Layouts/Borderlayout.java @@ -0,0 +1,40 @@ +package GUIAnwendungen.Layouts; +import javax.swing.JFrame; +import javax.swing.JButton; +import java.awt.BorderLayout; + +public class Borderlayout { + /* BorderLayout: + * - يستخدم لترتيب الأشياء التي نضيفها في الشمال, الجنوب, الشرق, الغرب أو الوسط. + * - يقسم النافذة أو الحاوية إلى 5 أقسام + * - + */ + public static void main(String[] args) { + + JFrame frame = new JFrame("BorderLayout demo"); // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن + // من الكلاس + frame.setSize(400, 300); // هنا قمنا بتحديد حجم النافذة. عرضها 400 و طولها 300 + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج + frame.setLayout(new BorderLayout(5, 5)); // لترتيب الأشياء التي نضيفها بداخلها BorderLayout هنا جعلنا النافذة + // تستخدم الـ + + // هنا قمنا بتعريف 5 أزرار + JButton b1 = new JButton("North"); + JButton b2 = new JButton("South"); + JButton b3 = new JButton("East"); + JButton b4 = new JButton("West"); + JButton b5 = new JButton("Center"); + + // هنا وضع كل زر في مكان مختلف في النافذة + frame.add(b1, BorderLayout.NORTH); + frame.add(b2, BorderLayout.SOUTH); + frame.add(b3, BorderLayout.EAST); + frame.add(b4, BorderLayout.WEST); + frame.add(b5, BorderLayout.CENTER); + + // هنا جعلنا النافذة مرئية + frame.setVisible(true); + + } + +} diff --git a/Programmierung2/src/GUIAnwendungen/Layouts/Cardlayout.java b/Programmierung2/src/GUIAnwendungen/Layouts/Cardlayout.java new file mode 100644 index 0000000..9e2cb83 --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/Layouts/Cardlayout.java @@ -0,0 +1,125 @@ +package GUIAnwendungen.Layouts; +import javax.swing.JFrame; +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JPanel; +import java.awt.CardLayout; +import java.awt.Color; +import java.awt.Container; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +public class Cardlayout { + + public static void main(String[] args) { + + JFrame frame = new JFrame("CardLayout demo"); // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس + frame.setSize(400, 200); // هنا قمنا بتحديد حجم النافذة. عرضها 400 و طولها 200 + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج + frame.setLayout(new GridBagLayout()); // لترتيب الأشياء التي نضيفها بداخلها GridBagLayout هنا جعلنا النافذة تستخدم الـ + + // اليمنى Panel اليسرى و الـ Panel هنا قمنا بتعريف الـ + JPanel panel_L = new JPanel(); + JPanel panel_R = new JPanel(); + + // في النافذة panel_R و الـ panel_L لتحديد مكان و حجم الـ GridBagConstraints هنا قمنا بتعريف كائن من الكلاس + GridBagConstraints gbc = new GridBagConstraints(); + + // يتأثر بكامل المساحة المتوفرة من النافذة بالإتجاهين الأفقي و العامودي gbc هنا جعلنا الـ + gbc.fill = GridBagConstraints.BOTH; + + // هنا جعلنا نسبة الجذب الأفقية و العامودية متساوي حتى يكون المحتوى دائماً مطابق لحجم الشاشة + gbc.weightx = 1; + gbc.weighty = 1; + + // في يسار النافذة panel_L هنا أضفنا الـ + frame.add(panel_L, gbc); + + // في يمين النافذة مع إعطائها حجم جذب أكبر بعشر مرات panel_R هنا أضفنا الـ + gbc.weightx = 10; + frame.add(panel_R, gbc); + + // إلى 4 أقسام بالطول panel_L هنا قمنا بتقسيم الـ + panel_L.setLayout(new GridLayout(4, 1)); + + // هنا قمنا بتعريف 4 أزرار + JButton next = new JButton("Next"); + JButton previous = new JButton("Previous"); + JButton first = new JButton("First"); + JButton last = new JButton("Last"); + + // panel_L هنا قمنا بإضافة الأزرار في الـ + panel_L.add(next); + panel_L.add(previous); + panel_L.add(first); + panel_L.add(last); + + // // لترتيب الأشياء التي نضيفها بداخلها فوق بعضها البعض CardLayout تستخدم الـ panel_R هنا جعلنا الـ + CardLayout card = new CardLayout(); + Container container = panel_R; + container.setLayout(card); + + // Panels هنا قمنا بتعريف 4 + JPanel p1 = new JPanel(); + JPanel p2 = new JPanel(); + JPanel p3 = new JPanel(); + JPanel p4 = new JPanel(); + + // منهم Panel هنا قمنا بإعطاء لون خلفية مختلف لكل + p1.setBackground(Color.white); + p2.setBackground(Color.yellow); + p3.setBackground(Color.cyan); + p4.setBackground(Color.green); + + // منهم Panel هنا قمنا بإضافة عنوان في كل + p1.add(new JLabel("Panel 1")); + p2.add(new JLabel("Panel 2")); + p3.add(new JLabel("Panel 3")); + p4.add(new JLabel("Panel 4")); + + // panel_R الأربعة في الـ Panels هنا قمنا بإضافة الـ + panel_R.add(p1); + panel_R.add(p2); + panel_R.add(p3); + panel_R.add(p4); + + // التالية Panel سيتم عرض الـ next هنا قلنا أنه عند النقر على الزر + next.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + card.next(container); + } + }); + + // السابقة Panel سيتم عرض الـ previous هنا قلنا أنه عند النقر على الزر + previous.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + card.previous(container); + } + }); + + // panel_R قمنا بإضافتها في الـ Panel سيتم عرض أول first هنا قلنا أنه عند النقر على الزر + first.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + card.first(container); + } + }); + + // panel_R قمنا بإضافتها في الـ Panel سيتم عرض آخر last هنا قلنا أنه عند النقر على الزر + last.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + card.last(container); + } + }); + + // هنا جعلنا النافذة مرئية + frame.setVisible(true); + + } + +} diff --git a/Programmierung2/src/GUIAnwendungen/Layouts/Flowlayout.java b/Programmierung2/src/GUIAnwendungen/Layouts/Flowlayout.java new file mode 100644 index 0000000..bba53c1 --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/Layouts/Flowlayout.java @@ -0,0 +1,37 @@ +package GUIAnwendungen.Layouts; +/*FlowLayout + * - يستخدم لترتيب الأشياء التي نضيفها وراء بعضها البعض + */ +import javax.swing.JFrame; +import javax.swing.JButton; +import java.awt.FlowLayout; +public class Flowlayout { + + public static void main(String[] args) { + + JFrame frame = new JFrame("FlowLayout demo"); // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من + // الكلاس + frame.setSize(350, 200); // هنا قمنا بتحديد حجم النافذة. عرضها 350 و طولها 200 + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج + frame.setLayout(new FlowLayout(FlowLayout.LEFT)); // لترتيب الأشياء التي نضيفها بداخلها FlowLayout هنا جعلنا + // النافذة تستخدم الـ + + // هنا قمنا بتعريف 5 أزرار + JButton b1 = new JButton("Button 1"); + JButton b2 = new JButton("Button 2"); + JButton b3 = new JButton("Button 3"); + JButton b4 = new JButton("Button 4"); + JButton b5 = new JButton("Button 5"); + + // هنا قمنا بإضافة الأزرار في النافذة + frame.add(b1); + frame.add(b2); + frame.add(b3); + frame.add(b4); + frame.add(b5); + + // هنا جعلنا النافذة مرئية + frame.setVisible(true); + + } +} diff --git a/Programmierung2/src/GUIAnwendungen/Layouts/GridBaglayout.java b/Programmierung2/src/GUIAnwendungen/Layouts/GridBaglayout.java new file mode 100644 index 0000000..da0cede --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/Layouts/GridBaglayout.java @@ -0,0 +1,88 @@ +package GUIAnwendungen.Layouts; +import javax.swing.JFrame; +import javax.swing.JButton; +import java.awt.GridBagLayout; +import java.awt.GridBagConstraints; + +/* GridBagLayout: + * - يستخدم لترتيب الأشياء التي نضيفها كجدول يتألف من أسطر و أعمدة يمكن تعديل أحجامها و مكان ظهورها. + * - هنا يجب أن يتم ربط كل شيء يتم إضافته بكائن من الكلاس GridBagConstraints + */ +public class GridBaglayout { + + public static void main(String[] args) { + + JFrame frame = new JFrame("GridBagLayout demo"); // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن + // من الكلاس + frame.setSize(300, 300); // هنا قمنا بتحديد حجم النافذة. عرضها 300 و طولها 300 + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج + frame.setLayout(new GridBagLayout()); // لترتيب الأشياء التي نضيفها بداخلها GridBagLayout هنا جعلنا النافذة + // تستخدم الـ + + // هنا قمنا بتعريف 10 أزرار + JButton b1 = new JButton("1"); + JButton b2 = new JButton("2"); + JButton b3 = new JButton("3"); + JButton b4 = new JButton("4"); + JButton b5 = new JButton("5"); + JButton b6 = new JButton("6"); + JButton b7 = new JButton("7"); + JButton b8 = new JButton("8"); + JButton b9 = new JButton("9"); + JButton b10 = new JButton("10"); + + // لتحديد مكان كل شيء بداخل النافذة GridBagConstraints هنا قمنا بتعريف كائن من + // الكلاس + GridBagConstraints gbc = new GridBagConstraints(); + + // يتأثر بكامل المساحة المتوفرة من النافذة بالإتجاهين الأفقي و العامودي gbc هنا + // جعلنا الـ + gbc.fill = GridBagConstraints.BOTH; + + // هنا جعلنا نسبة الجذب الأفقية و العامودية متساوي حتى يكون المحتوى دائماً مطابق + // لحجم الشاشة + gbc.weightx = 1; + gbc.weighty = 1; + + // هنا أضفنا أول ثلاث أزرار في أول سطر + frame.add(b1, gbc); + frame.add(b2, gbc); + frame.add(b3, gbc); + + // هنا أضفنا الزر الرابع كآخر زر في السطر الأول + gbc.gridwidth = GridBagConstraints.REMAINDER; + frame.add(b4, gbc); + + // هنا أضفنا الزر الخامس لوحده و الذي بدوره سيظهر على سطر جديد و الذي سيكون + // السطر الثاني هنا + frame.add(b5, gbc); + + // هنا أضفنا الزر السادس نسبة للزر الخامس, أي سيوضع بعد الزر الخامس و على سطر + // جديد و الذي سيكون السطر الثالث هنا + gbc.gridwidth = GridBagConstraints.RELATIVE; + frame.add(b6, gbc); + + // هنا أضفنا الزر السابع كآخر زر في نفس السطر الموجود فيه الزر السادس + gbc.gridwidth = GridBagConstraints.REMAINDER; + frame.add(b7, gbc); + + // هنا أضفنا الزر الثامن و الذي بدوره سيظهر على سطر جديد و الذي سيكون السطر + // الرابع هنا + gbc.gridwidth = 1; + gbc.gridheight = 2; // هنا جعلناه طوله مضاعف, أي سيظهر أيضاً على السطر الخامس + frame.add(b8, gbc); + + // هنا أضفنا الزر التاسع كآخر زر في نفس السطر الموجود فيه الزر الثامن + gbc.gridwidth = GridBagConstraints.REMAINDER; + gbc.gridheight = 1; + frame.add(b9, gbc); + + // هنا أضفنا الزر العاشر كآخر زر في نفس السطر الموجود فيه الزر التاسع + frame.add(b10, gbc); + + // هنا جعلنا النافذة مرئية + frame.setVisible(true); + + } + +} diff --git a/Programmierung2/src/GUIAnwendungen/Layouts/Gridlayout.java b/Programmierung2/src/GUIAnwendungen/Layouts/Gridlayout.java new file mode 100644 index 0000000..c1b6584 --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/Layouts/Gridlayout.java @@ -0,0 +1,46 @@ +package GUIAnwendungen.Layouts; +/* GridLayout + * - يستخدم لترتيب الأشياء التي نضيفها كجدول يتألف من أسطر و أعمدة متساوية الحجم. + */ +import javax.swing.JFrame; +import javax.swing.JButton; +import java.awt.GridLayout; +public class Gridlayout { + + public static void main(String[] args) { + + JFrame frame = new JFrame("GridLayout demo"); // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من + // الكلاس + frame.setSize(300, 300); // هنا قمنا بتحديد حجم النافذة. عرضها 300 و طولها 300 + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج + frame.setLayout(new GridLayout(3, 3,10,10)); // لترتيب الأشياء التي نضيفها بداخلها GridLayout هنا جعلنا + // النافذة تستخدم الـ + + // هنا قمنا بتعريف 9 أزرار + JButton b1 = new JButton("1"); + JButton b2 = new JButton("2"); + JButton b3 = new JButton("3"); + JButton b4 = new JButton("4"); + JButton b5 = new JButton("5"); + JButton b6 = new JButton("6"); + JButton b7 = new JButton("7"); + JButton b8 = new JButton("8"); + JButton b9 = new JButton("9"); + + // هنا قمنا بإضافة الأزرار في النافذة + frame.add(b1); + frame.add(b2); + frame.add(b3); + frame.add(b4); + frame.add(b5); + frame.add(b6); + frame.add(b7); + frame.add(b8); + frame.add(b9); + + // هنا جعلنا النافذة مرئية + frame.setVisible(true); + + } + +} diff --git a/Programmierung2/src/GUIAnwendungen/Layouts/Grouplayout.java b/Programmierung2/src/GUIAnwendungen/Layouts/Grouplayout.java new file mode 100644 index 0000000..7922b4f --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/Layouts/Grouplayout.java @@ -0,0 +1,76 @@ +package GUIAnwendungen.Layouts; +import javax.swing.JFrame; +import javax.swing.JTextField; +import javax.swing.JLabel; +import javax.swing.JButton; +import javax.swing.GroupLayout; +import java.awt.Container; +public class Grouplayout { + + public static void main(String[] args) { + + // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس + JFrame frame = new JFrame("Login"); + + // لترتيب الأشياء التي نضيفها بداخلها GroupLayout هنا جعلنا النافذة تستخدم الـ + Container container = frame.getContentPane(); + GroupLayout groupLayout = new GroupLayout(container); + container.setLayout(groupLayout); + + // هنا قمنا بإضافة هوامش بين النافذة و المجموعات و بين جميع الأشياء التي سنضيفها + // في المجموعات + groupLayout.setAutoCreateGaps(true); + groupLayout.setAutoCreateContainerGaps(true); + groupLayout.preferredLayoutSize(container); + + // هنا قمنا بتعريف جميع الأشياء التي سنضيفها في النافذة + JLabel label_1 = new JLabel("User"); + JLabel label_2 = new JLabel("Password"); + JTextField textField_1 = new JTextField(); + JTextField textField_2 = new JTextField(); + JButton button_1 = new JButton("Register"); + JButton button_2 = new JButton("Login"); + + // هنا قمنا بتعريف مجموعتين أساسيتين لوضع المحتوى على عامودين و مجموعة ثالثة + // داخل المجموعة الثانية + groupLayout.setHorizontalGroup(groupLayout.createSequentialGroup() + // في مجموعة متوازية أفقياً label_2 و الـ label_1 هنا وضعنا الـ + .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(label_1) + .addComponent(label_2)) + // في مجموعة متوازية أفقياً textField_2 و الـ textField_1 هنا وضعنا الـ + .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(textField_1) + .addComponent(textField_2) + + // في مجموعة متتالية و وضعناها مع المجموعة الثانية button_2 و الـ button_1 هنا + // وضعنا الـ + .addGroup(groupLayout.createSequentialGroup() + .addComponent(button_1) + .addComponent(button_2)))); + + // هنا قمنا بتعريف ثلاث مجموعات عامودية, لوضع المحتوى على ثلاث أسطر + groupLayout.setVerticalGroup(groupLayout.createSequentialGroup() + // في مجموعة متوازية عامودياً و بالتالي سيظهروا في السطر الأول textField_1 و الـ + // label_1 هنا وضعنا الـ + .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(label_1) + .addComponent(textField_1)) + // في مجموعة متوازية عامودياً و بالتالي سيظهروا في السطر الثاني textField_2 و + // الـ label_2 هنا وضعنا الـ + .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(label_2) + .addComponent(textField_2)) + // في مجموعة متوازية عامودياً و بالتالي سيظهروا في السطر الثالث button_2 و الـ + // button_1 هنا وضعنا الـ + .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(button_1) + .addComponent(button_2))); + + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج + frame.pack(); // هنا جعلنا حجم النافذة يناسب حجم المحتوى + frame.setVisible(true); // هنا جعلنا النافذة مرئية + + } + +}