diff --git a/Programmierung2/src/GUIAnwendungen/BewegePanle.java b/Programmierung2/src/GUIAnwendungen/BewegePanle.java deleted file mode 100644 index 6567841..0000000 --- a/Programmierung2/src/GUIAnwendungen/BewegePanle.java +++ /dev/null @@ -1,58 +0,0 @@ -package GUIAnwendungen; - -import java.awt.Color; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.JFrame; -import javax.swing.JPanel; -import javax.swing.Timer; - -public class BewegePanle extends JPanel { - private int yPosition = 0; // Startposition des Panels oben - private final int speed = 1; // Geschwindigkeit der Bewegung - private final int panelWidth = 100; - private final int panelHeight = 100; - - public BewegePanle() { - // Setze die Hintergrundfarbe des Panels - setBackground(Color.red); - - // Timer initialisieren und starten - //(int delay, ActionListener listener) - Timer timer = new Timer(10, new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - // Aktualisiere die y-Position - yPosition += speed; - - // Wenn das Panel unten angekommen ist, starte wieder von oben - if (yPosition > 750 - panelHeight) { - yPosition = 0; // Zurück an den oberen Rand - } - - // Erzwinge das Neuzeichnen des Panels - setBounds(0, yPosition, panelWidth, panelHeight); - } - }); - - timer.start(); // Timer starten - } - - public static void main(String[] args) { - // Erstelle das Hauptfenster - JFrame frame = new JFrame(); - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - frame.setSize(750, 750); - frame.setLayout(null); // Deaktiviere das Layout-Management - - // Erstelle eine Instanz von Jpanel und füge sie dem Fenster hinzu - BewegePanle panel = new BewegePanle(); - panel.setBounds(0, 0, 100, 100); // Initiale Position und Größe - frame.add(panel); - - // Mache das Fenster sichtbar - frame.setVisible(true); - } - } - diff --git a/Programmierung2/src/GUIAnwendungen/Borderlayout.java b/Programmierung2/src/GUIAnwendungen/Borderlayout.java deleted file mode 100644 index 29d2497..0000000 --- a/Programmierung2/src/GUIAnwendungen/Borderlayout.java +++ /dev/null @@ -1,82 +0,0 @@ -package GUIAnwendungen; -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Dimension; -import javax.swing.JFrame; -import javax.swing.JPanel; - -public class Borderlayout { - /* - * steuert die Positionierung von Komponenten in einem Container - * Z.B: - * NORTH (oben) - SOUTH (unten) - EAST (rechts) - WEST (links) - CENTER (Mitte) - - */ - - public static void main(String[] args) { - - // Erstelle ein Fenster (JFrame-Objekt) - JFrame frame = new JFrame(); - - // Setzt das Layout des Rahmens auf BorderLayout mit einem Abstand von 10 Pixeln zwischen den Komponenten - frame.setLayout(new BorderLayout(10,10)); - - // Legt die Größe des Fensters fest (Breite: 750 Pixel, Höhe: 750 Pixel) - frame.setSize(750, 750); - - // Stellt sicher, dass das Programm beendet wird, wenn das Fenster geschlossen wird - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - - // Setzt den Titel des Fensters - frame.setTitle("Mein erstes Fenster"); - - // Macht das Fenster sichtbar - frame.setVisible(true); - - // Erstelle fünf JPanel-Objekte, die als Container für andere Komponenten dienen können - JPanel panel1 = new JPanel(); - JPanel panel2 = new JPanel(); - JPanel panel3 = new JPanel(); - JPanel panel4 = new JPanel(); - JPanel panel5 = new JPanel(); - - // Setzt den Hintergrund von panel1 auf Rot - panel1.setBackground(Color.red); - // Setzt den Hintergrund von panel2 auf Grün - panel2.setBackground(Color.green); - // Setzt den Hintergrund von panel3 auf Gelb - panel3.setBackground(Color.yellow); - // Setzt den Hintergrund von panel4 auf Magenta - panel4.setBackground(Color.magenta); - // Setzt den Hintergrund von panel5 auf Blau - panel5.setBackground(Color.blue); - - // Legt die bevorzugte Größe von panel1 fest (100x100 Pixel) - panel1.setPreferredSize(new Dimension(100,100)); - // Legt die bevorzugte Größe von panel2 fest (100x100 Pixel) - panel2.setPreferredSize(new Dimension(100,100)); - // Legt die bevorzugte Größe von panel3 fest (100x100 Pixel) - panel3.setPreferredSize(new Dimension(100,100)); - // Legt die bevorzugte Größe von panel4 fest (100x100 Pixel) - panel4.setPreferredSize(new Dimension(100,100)); - // Legt die bevorzugte Größe von panel5 fest (100x100 Pixel) - panel5.setPreferredSize(new Dimension(100,100)); - - // Fügt panel1 im Bereich NORTH des BorderLayouts hinzu - frame.add(panel1, BorderLayout.NORTH); - // Fügt panel2 im Bereich WEST des BorderLayouts hinzu - frame.add(panel2, BorderLayout.WEST); - // Fügt panel3 im Bereich EAST des BorderLayouts hinzu - frame.add(panel3, BorderLayout.EAST); - // Fügt panel4 im Bereich SOUTH des BorderLayouts hinzu - frame.add(panel4, BorderLayout.SOUTH); - // Fügt panel5 im Bereich CENTER des BorderLayouts hinzu - frame.add(panel5, BorderLayout.CENTER); - - } - -} diff --git a/Programmierung2/src/GUIAnwendungen/CheckBox.java b/Programmierung2/src/GUIAnwendungen/CheckBox.java new file mode 100644 index 0000000..eca869b --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/CheckBox.java @@ -0,0 +1,43 @@ +package GUIAnwendungen; + +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; + +import javax.swing.JCheckBox; +import javax.swing.JFrame; +import javax.swing.JLabel; + +public class CheckBox { + + + static JFrame frame = new JFrame("JCheckBox demo"); + static JCheckBox checkBox = new JCheckBox("Check Box"); + static JLabel label = new JLabel(); + + public static void main(String[] args) { + + checkBox.setBounds(40, 40, 100, 30); + + label.setBounds(40, 70, 200, 30); + label.setText("Check Box is not checked"); + + frame.add(checkBox); + frame.add(label); + + frame.setSize(300, 250); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setLayout(null); + frame.setVisible(true); + + checkBox.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + if(checkBox.isSelected()) + label.setText("Check Box is checked"); + else + label.setText("Check Box is not checked"); + } + }); + + } +} diff --git a/Programmierung2/src/GUIAnwendungen/ComboBox.java b/Programmierung2/src/GUIAnwendungen/ComboBox.java new file mode 100644 index 0000000..161f758 --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/ComboBox.java @@ -0,0 +1,92 @@ +package GUIAnwendungen; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import javax.swing.JFrame; +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JLabel; +import javax.swing.JTextField; + +// Erstelle eine List +public class ComboBox { + + // هنا قمنا بإنشاء النافذة و جميع الأشياء التي سنضعها فيها + static JFrame frame = new JFrame("JComboBox demo"); + static JComboBox comboBox = new JComboBox(); + static JButton addButton = new JButton("Add Item"); + static JButton removeButton = new JButton("Remove Selected Item"); + static JButton removeAllButton = new JButton("Remove All Items"); + static JLabel counterLabel = new JLabel("Total items = 0"); + static JTextField textField = new JTextField(); + + public static void main(String[] args) { + + // frame هنا قمنا بتحديد أماكن الأشياء التي سنضيفها في الـ + textField.setBounds(40, 40, 110, 30); + addButton.setBounds(170, 40, 120, 30); + removeButton.setBounds(40, 80, 250, 30); + removeAllButton.setBounds(40, 120, 250, 30); + comboBox.setBounds(310, 40, 140, 30); + counterLabel.setBounds(310, 80, 140, 30); + + // frame هنا قمنا بإضافة جميع الأشياء التي قمنا بتعريفها سابقاً في الـ + frame.add(textField); + frame.add(addButton); + frame.add(removeButton); + frame.add(removeAllButton); + frame.add(comboBox); + frame.add(counterLabel); + + // frame هنا قمنا بتحديد خصائص الـ + frame.setSize(500, 250); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setLayout(null); + frame.setVisible(true); + + + // addButton هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ + addButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) + { + // إذا كان مربع النص غير فارغ و قام المستخدم بالنقر على الزر, عندها سيتم إضافته + if( !textField.getText().equals("") ) + { + comboBox.addItem(textField.getText()); + counterLabel.setText("Total Items = "+ comboBox.getItemCount()); + } + } + }); + + + // removeButton هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ + removeButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) + { + // سيتم حذف العنصر الحالي بشرط وجود عنصر واحد على الأقل فيها + if( comboBox.getItemCount() > 0 ) + { + comboBox.removeItemAt(comboBox.getSelectedIndex()); + counterLabel.setText("Total Items = "+ comboBox.getItemCount()); + } + } + }); + + + // removeAllButton هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ + removeAllButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) + { + // عند النقر على هذا الزر, سيتم حذف جميع العناصر + comboBox.removeAllItems(); + counterLabel.setText("Total Items = "+ comboBox.getItemCount()); + } + }); + + + } + +} diff --git a/Programmierung2/src/GUIAnwendungen/DatumAnzeigen.java b/Programmierung2/src/GUIAnwendungen/DatumAnzeigen.java deleted file mode 100644 index bfc0aa6..0000000 --- a/Programmierung2/src/GUIAnwendungen/DatumAnzeigen.java +++ /dev/null @@ -1,60 +0,0 @@ -package GUIAnwendungen; - -import java.awt.Color; -import javax.swing.JFrame; -import javax.swing.JLabel; -import java.awt.FlowLayout; -import java.awt.Font; -import java.util.Date; -import java.text.SimpleDateFormat; - -public class DatumAnzeigen implements Runnable { - - static JLabel timeLabel = new JLabel(); - - @Override - public void run() { - - while(!Thread.currentThread().isInterrupted()) // ( شغال Thread أي طالما أن الـ ) true لا ترجع isInterrupted() طالما أن الدالة - { - - Date date = new Date(); - SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss a"); - - timeLabel.setText(sdf.format(date)); // كل ثانية timeLabel سيتم وضع الوقت الحالي كنص للكائن - - try { - Thread.sleep(1000); - } - catch(Exception e) { - timeLabel.setText(e.getMessage()); // timeLabel في حال حدث أي خطأ سيتم وضعه كنص للكائن - timeLabel.setForeground(Color.red); // و سيتم تلوينه باللون الأحمر - } - } - - } - - - public static void main(String[] args) { - - JFrame frame = new JFrame("Display Time"); // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس - frame.setSize(350, 70); // هنا قمنا بتحديد حجم النافذة. عرضها 350 و طولها 70 - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج - frame.setLayout(new FlowLayout()); // حتى نجعل الأشياء التي نضيفها في النافذة تترب وراء بعضها و في وسط النافذة FlowLayout إستخدمنا الـ - - Font newFont = new Font("Arial", Font.BOLD, 20); // حجمه 20 Arial يمثل نوع خط عريض إسمه Font هنا أنشأنا كائن من الكلاس - - timeLabel.setFont(newFont); // newFont يستخدم الـ TimeLabel هنا جعلنا الـ - timeLabel.setForeground(Color.blue); // إلى اللون الأزرق TimeLabel هنا قمنا بتغيير لون الـ - - frame.add(timeLabel); // frame في الـ TimeLabel هنا أضفنا الـ - - frame.setVisible(true); // هنا جعلنا النافذة مرئية - - Thread t = new Thread(new DatumAnzeigen()); // Runnable نفسه لأنه يطبق الإنترفيس Main() مبني على كائن من الكلاس Thread هنا قمنا بإنشاء كائن من الكلاس - - t.start(); // و التي بدورها ستعرض لنا الوقت كل ثانية run() أي سيتم إستدعاء الدالة thread هنا قمنا بتشغيل كائن الـ - - } - -} \ No newline at end of file diff --git a/Programmierung2/src/GUIAnwendungen/FileChooser.java b/Programmierung2/src/GUIAnwendungen/FileChooser.java new file mode 100644 index 0000000..319b382 --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/FileChooser.java @@ -0,0 +1,22 @@ +package GUIAnwendungen; +import javax.swing.JFileChooser; + +public class FileChooser { + + public static void main(String[] args) { + + // chooser إسمه JColorChooser هنا قمنا بإنشاء كائن من الكلاس + JFileChooser chooser = new JFileChooser(); + + // كنافذة لإختيار ملف في وسط شاشة المستخدم chooser هنا قمنا بإظهار الكائن + // returnedValue و تخزين القيمة التي سيرجعها عندما يتم إغلاقه في المتغير + int returnedValue = chooser.showOpenDialog(null); + + if(returnedValue == JFileChooser.APPROVE_OPTION) + { + // هنا من المفترض أن تضع الأوامر التي سيتم تنفيذها بعد إختيار الملف أو المجلد + } + + } + +} diff --git a/Programmierung2/src/GUIAnwendungen/Flowlayout.java b/Programmierung2/src/GUIAnwendungen/Flowlayout.java deleted file mode 100644 index 3a26b0a..0000000 --- a/Programmierung2/src/GUIAnwendungen/Flowlayout.java +++ /dev/null @@ -1,64 +0,0 @@ -package GUIAnwendungen; -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Dimension; -import java.awt.FlowLayout; - -import javax.swing.JButton; -import javax.swing.JFrame; -import javax.swing.JPanel; - -public class Flowlayout { - - /* - * - Ordent die Komponenten innerhalb eines Containers in einer einzigen Zeile - * - Ausrichtung: Die Komponenten können linksbündig (LEFT), zentriert (CENTER), oder rechtsbündig (RIGHT) ausgerichtet werden. - * - hier wird auch angezeigt, wie man button auf Panel paltziert - * Hinweis: FlowLayout bietet keine Möglichkeit, eine einzelne Komponente manuell zu platzieren. - */ - - public static void main(String[] args) { - - // Erstelle ein JFrame-Fenster - JFrame fenster = new JFrame(); - - // Beendet das Programm beim Schließen des Fensters - fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - - // Legt die Größe des Fensters auf 500x500 Pixel fest - fenster.setSize(500, 500); - - // Setzt das Layout des Fensters auf FlowLayout mit zentrierter Ausrichtung und - // Abständen von 10 Pixeln - fenster.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10)); - - // Erstelle ein JPanel mit vordefinierter Größe 250x250 Pixel und hellgrauem - // Hintergrund - JPanel panel1 = new JPanel(); - panel1.setPreferredSize(new Dimension(250, 250)); - panel1.setBackground(Color.lightGray); - - // Setzt das Layout von panel1 ebenfalls auf FlowLayout - panel1.setLayout(new FlowLayout()); - - // Füge dem Panel 9 Buttons hinzu, die in einer Zeile oder mehreren Zeilen - // angeordnet werden - panel1.add(new JButton("1")); - panel1.add(new JButton("2")); - panel1.add(new JButton("3")); - panel1.add(new JButton("4")); - panel1.add(new JButton("5")); - panel1.add(new JButton("6")); - panel1.add(new JButton("7")); - panel1.add(new JButton("8")); - panel1.add(new JButton("9")); - - // Füge das Panel dem JFrame hinzu - fenster.add(panel1); - - // Macht das Fenster sichtbar - fenster.setVisible(true); - } - - -} diff --git a/Programmierung2/src/GUIAnwendungen/GridBagLayoutExample.java b/Programmierung2/src/GUIAnwendungen/GridBagLayoutExample.java deleted file mode 100644 index 8aafbcb..0000000 --- a/Programmierung2/src/GUIAnwendungen/GridBagLayoutExample.java +++ /dev/null @@ -1,31 +0,0 @@ -package GUIAnwendungen; - -import javax.swing.*; -import java.awt.*; -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Dimension; -import java.awt.FlowLayout; -import java.awt.GridLayout; - -import javax.swing.JButton; -import javax.swing.JFrame; -import javax.swing.JPanel; -public class GridBagLayoutExample { - /*- manuell positionien von Elementen - * - in viel flexibleres Layout-Manager, bei dem du die Position, - * Größe und Ausdehnung (über mehrere Zeilen/Spalten) der einzelnen Komponenten präzise steuern kannst. - * - Du kannst einzelne Komponenten unterschiedlich groß machen, sie über mehrere Zellen spannen und Abstände festlegen. - */ - public static void main(String[] args) { - JFrame frame = new JFrame("GridBagLayout Example"); - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - frame.setLayout(null); - JButton button1 = new JButton("Button1"); - frame.add(button1); - - button1.setBounds(0, 0, 120, 30); - frame.setSize(800, 800); - frame.setVisible(true); - } -} diff --git a/Programmierung2/src/GUIAnwendungen/Gridlayout.java b/Programmierung2/src/GUIAnwendungen/Gridlayout.java deleted file mode 100644 index 97825d2..0000000 --- a/Programmierung2/src/GUIAnwendungen/Gridlayout.java +++ /dev/null @@ -1,42 +0,0 @@ -package GUIAnwendungen; - -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Dimension; -import java.awt.FlowLayout; -import java.awt.GridLayout; - -import javax.swing.JButton; -import javax.swing.JFrame; -import javax.swing.JPanel; - -public class Gridlayout { - - public static void main(String[] args) { - - // Erstelle ein JFrame-Fenster - JFrame fenster = new JFrame(); - - // Beendet das Programm beim Schließen des Fensters - fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - - // Legt die Größe des Fensters auf 500x500 Pixel fest - fenster.setSize(500, 500); - fenster.setLayout(new GridLayout(4,3,10,4)); - - fenster.add(new JButton("1")); - fenster.add(new JButton("2")); - fenster.add(new JButton("3")); - fenster.add(new JButton("4")); - fenster.add(new JButton("5")); - fenster.add(new JButton("6")); - fenster.add(new JButton("7")); - fenster.add(new JButton("8")); - fenster.add(new JButton("9")); - - fenster.setVisible(true); - - - } - -} diff --git a/Programmierung2/src/GUIAnwendungen/Jpanel.java b/Programmierung2/src/GUIAnwendungen/Jpanel.java index 7512f43..e609efe 100644 --- a/Programmierung2/src/GUIAnwendungen/Jpanel.java +++ b/Programmierung2/src/GUIAnwendungen/Jpanel.java @@ -1,6 +1,12 @@ package GUIAnwendungen; -import java.awt.Color; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.BorderFactory; +import javax.swing.JLabel; +import javax.swing.JTextField; +import javax.swing.JComboBox; +import javax.swing.JButton; import java.awt.Font; import javax.swing.BorderFactory; @@ -13,30 +19,65 @@ import javax.swing.border.Border; // mit Jpanel kann man alle grafischen Bauelemente einsetzen public class Jpanel { - public static void main(String[] args) { - JPanel panel = new JPanel(); - panel.setBackground(Color.red); - // setze eine Grafisches Bauelement (int x, int y, int width, int height) - panel.setBounds(100, 100, 10, 10); - - JFrame frame = new JFrame(); - - //stellt sicher, dass keine automatische Positionierung und Größenanpassung erhalten - frame.setLayout(null); - - // setSize(width, height) - frame.setSize(750, 750); - - // setzte einen Überschrift für mein Fenster - frame.setTitle("Mein erstes Fenster"); - - //setVisible(boolean): gibt an, ob mein Fenster sichtbar ist oder nicht - frame.setVisible(true); - - frame.add(panel); - - - } + public static void main(String[] args) { + + // هنا قمنا بإنشاء النافذة مع تحديد بعض خصائصها + JFrame frame = new JFrame("JPanel demo"); + frame.setSize(400, 400); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setLayout(null); + + // و وضعنا له حدود و عنوان Layout Manager لا يستخدم أي Panel هنا قمنا بتعريف + JPanel panel = new JPanel(null); + panel.setBorder(BorderFactory.createTitledBorder("Add User")); + panel.setBounds(50, 30, 290, 300); + + // Frame في الـ Panel هنا وضعنا الـ + frame.add(panel); + + // Panel هنا قمنا بتعريف جميع الأشياء التي سنضعها في الـ + JLabel label1 = new JLabel("First Name"); + JLabel label2 = new JLabel("Last Name"); + JLabel label3 = new JLabel("Father Name"); + JLabel label4 = new JLabel("Mother Name"); + JLabel label5 = new JLabel("Gender"); + JTextField field1 = new JTextField(); + JTextField field2 = new JTextField(); + JTextField field3 = new JTextField(); + JTextField field4 = new JTextField(); + JComboBox comboBox = new JComboBox(new String[]{ "Male", "Female"}); + JButton button = new JButton("Add User"); + + // Panel هنا قمنا بتحديد مكان كل شيء سنضيفه بداخل الـ + label1.setBounds(30, 50, 100, 25); + label2.setBounds(30, 90, 100, 25); + label3.setBounds(30, 130, 100, 25); + label4.setBounds(30, 170, 100, 25); + label5.setBounds(30, 210, 100, 25); + field1.setBounds(120, 50, 130, 25); + field2.setBounds(120, 90, 130, 25); + field3.setBounds(120, 130, 130, 25); + field4.setBounds(120, 170, 130, 25); + comboBox.setBounds(120, 210, 130, 25); + button.setBounds(120, 255, 130, 25); + + // Panel في الـ Buttons هنا قمنا بوضع الـ + panel.add(label1); + panel.add(label2); + panel.add(label3); + panel.add(label4); + panel.add(label5); + panel.add(field1); + panel.add(field2); + panel.add(field3); + panel.add(field4); + panel.add(comboBox); + panel.add(button); + + // مرئية Frame هنا جعلنا الـ + frame.setVisible(true); + + } } \ No newline at end of file diff --git a/Programmierung2/src/GUIAnwendungen/KeyBindingsExample.java b/Programmierung2/src/GUIAnwendungen/KeyBindingsExample.java deleted file mode 100644 index 25032a6..0000000 --- a/Programmierung2/src/GUIAnwendungen/KeyBindingsExample.java +++ /dev/null @@ -1,31 +0,0 @@ -package GUIAnwendungen; - -import javax.swing.*; -import java.awt.event.ActionEvent; - -public class KeyBindingsExample extends JFrame { - public KeyBindingsExample() { - setTitle("KeyBindings Beispiel"); - setSize(300, 200); - setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - - // Panel erstellen - JPanel panel = new JPanel(); - add(panel); - - // KeyBinding hinzufügen: 'A' Taste - panel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("A"), "keyA"); - panel.getActionMap().put("keyA", new AbstractAction() { - @Override - public void actionPerformed(ActionEvent e) { - System.out.println("Taste 'A' wurde gedrückt (KeyBindings)."); - } - }); - - setVisible(true); - } - - public static void main(String[] args) { - new KeyBindingsExample(); - } -} diff --git a/Programmierung2/src/GUIAnwendungen/List.java b/Programmierung2/src/GUIAnwendungen/List.java new file mode 100644 index 0000000..2304b97 --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/List.java @@ -0,0 +1,51 @@ +package GUIAnwendungen; + +import javax.swing.DefaultListModel; +import javax.swing.JFrame; +import javax.swing.JList; +import javax.swing.JScrollPane; + +public class List { + + public static void main(String[] args) { + + JFrame frame = new JFrame("JList demo"); + frame.setSize(320, 360); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setLayout(null); + + // Erstellt ein neues DefaultListModel-Objekt, das als Datencontainer für die + // Elemente der JList dient. + // Es speichert die Liste der Elemente (z.B. Farben), die in der JList angezeigt + // werden sollen. + DefaultListModel model = new DefaultListModel(); + + // Erstellt eine neue JList und weist ihr das zuvor erstellte DefaultListModel zu. + // Die JList zeigt die Elemente an, die im DefaultListModel gespeichert sind. + JList list = new JList(model); + + // Erstellt ein JScrollPane (ein scrollbares Fenster) und fügt die JList darin ein. + // Dies ermöglicht das Scrollen, wenn die Liste mehr Elemente enthält, als im sichtbaren Bereich angezeigt werden können. + JScrollPane listScrollPane = new JScrollPane(list); + + listScrollPane.setBounds(100, 40, 100, 230); + + model.addElement("red"); + model.addElement("blue"); + model.addElement("green"); + model.addElement("yellow"); + model.addElement("orange"); + model.addElement("brown"); + model.addElement("pink"); + model.addElement("purple"); + model.addElement("gray"); + model.addElement("black"); + model.addElement("white"); + + frame.add(listScrollPane); + + frame.setVisible(true); + + } + +} diff --git a/Programmierung2/src/GUIAnwendungen/MenuBar/CheckBoxMenuItem.java b/Programmierung2/src/GUIAnwendungen/MenuBar/CheckBoxMenuItem.java new file mode 100644 index 0000000..a9da58b --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/MenuBar/CheckBoxMenuItem.java @@ -0,0 +1,68 @@ +package GUIAnwendungen.MenuBar; +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +import javax.swing.JCheckBoxMenuItem; +import javax.swing.JRadioButtonMenuItem; +import javax.swing.ButtonGroup; +public class CheckBoxMenuItem { + + public static void main(String[] args) { + + JFrame frame = new JFrame("JMenuBar demo"); // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس + frame.setSize(500, 250); // هنا قمنا بتحديد حجم النافذة. عرضها 500 و طولها 250 + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج + + // هنا قمنا بتعريف شريط القوائم + JMenuBar menuBar = new JMenuBar(); + + // هنا قمنا بتعريف قائمة واحدة + JMenu menu = new JMenu("Menu"); + + // Check Box هنا قمنا بتعريف إثنين + JCheckBoxMenuItem connect = new JCheckBoxMenuItem("Connect"); + JCheckBoxMenuItem recieveNotifications = new JCheckBoxMenuItem("Recieve Notifications"); + + // Radio Buttons هنا قمنا بتعريف ثلاثة + JRadioButtonMenuItem isAvailable = new JRadioButtonMenuItem("Available"); + JRadioButtonMenuItem isBusy = new JRadioButtonMenuItem("Busy"); + JRadioButtonMenuItem isAway = new JRadioButtonMenuItem("Away"); + + // هنا قمنا بتعريف عنصر عادي + JMenuItem exit = new JMenuItem("Exit"); + + // ضمن مجموعة واحدة Radio Buttons لوضع الثلاثة ButtonGroup هنا قمنا بتعريف كائن من الكلاس + ButtonGroup group = new ButtonGroup(); + + // في نفس المجموعة و بالتالي أصبح بالإمكان إختيار أحدهم فقط Radio Buttons هنا وضعنا الثلاثة + group.add(isAvailable); + group.add(isBusy); + group.add(isAway); + + // مختارين بشكل إفتراضي isAvailable و الـ connect هنا جعلنا الـ + connect.setSelected(true); + isAvailable.setSelected(true); + + // هنا قمنا بوضع القائمة في شريط القوائم + menuBar.add(menu); + + // هنا قمنا بوضع جميع العناصر في القائمة + menu.add(connect); + menu.add(recieveNotifications); + menu.addSeparator(); // هنا أضفنا خط فاصل + menu.add(isAvailable); + menu.add(isBusy); + menu.add(isAway); + menu.addSeparator(); // هنا أضفنا خط فاصل + menu.add(exit); + + // frame هنا قمنا بوضع شريط القوائم في الـ + frame.setJMenuBar(menuBar); + + // مرئية frame هنا جعلنا الـ + frame.setVisible(true); + + } + +} diff --git a/Programmierung2/src/GUIAnwendungen/MenuBar/MenuBar.java b/Programmierung2/src/GUIAnwendungen/MenuBar/MenuBar.java new file mode 100644 index 0000000..547feb7 --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/MenuBar/MenuBar.java @@ -0,0 +1,36 @@ +package GUIAnwendungen.MenuBar; +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuBar; + +public class MenuBar { + + public static void main(String[] args) { + + JFrame frame = new JFrame("JMenuBar demo"); // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من + // الكلاس + frame.setSize(500, 250); // هنا قمنا بتحديد حجم النافذة. عرضها 500 و طولها 250 + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج + + // هنا قمنا بتعريف شريط القوائم + JMenuBar menuBar = new JMenuBar(); + + // هنا قمنا بتعريف 3 قوائم + JMenu file = new JMenu("File"); + JMenu edit = new JMenu("Edit"); + JMenu help = new JMenu("Help"); + + // هنا قمنا بوضع القوائم الثلاثة في شريط القوائم + menuBar.add(file); + menuBar.add(edit); + menuBar.add(help); + + // frame هنا قمنا بوضع شريط القوائم في الـ + frame.setJMenuBar(menuBar); + + // مرئية frame هنا جعلنا الـ + frame.setVisible(true); + + } + +} diff --git a/Programmierung2/src/GUIAnwendungen/MenuBar/MenuItem.java b/Programmierung2/src/GUIAnwendungen/MenuBar/MenuItem.java new file mode 100644 index 0000000..b2aec71 --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/MenuBar/MenuItem.java @@ -0,0 +1,134 @@ +package GUIAnwendungen.MenuBar; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +public class MenuItem { + + public static void main(String[] args) { + + JFrame frame = new JFrame("JMenuBar demo"); // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس + frame.setSize(500, 250); // هنا قمنا بتحديد حجم النافذة. عرضها 500 و طولها 250 + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج + + // هنا قمنا بتعريف شريط القوائم + JMenuBar menuBar = new JMenuBar(); + + // هنا قمنا بتعريف 3 قوائم + JMenu file = new JMenu("File"); + JMenu edit = new JMenu("Edit"); + JMenu help = new JMenu("Help"); + + // هنا قمنا بتعريف 11 عنصر + JMenuItem newFile = new JMenuItem("New"); + JMenuItem open = new JMenuItem("Open"); + JMenuItem save = new JMenuItem("Save"); + JMenuItem exit = new JMenuItem("Exit"); + JMenuItem undo = new JMenuItem("Undo"); + JMenuItem cut = new JMenuItem("Cut"); + JMenuItem copy = new JMenuItem("Copy"); + JMenuItem paste = new JMenuItem("Paste"); + JMenuItem select = new JMenuItem("Select All"); + JMenuItem about = new JMenuItem("About"); + JMenuItem report = new JMenuItem("Report Issue"); + + // هنا قمنا بوضع القوائم الثلاثة في شريط القوائم + menuBar.add(file); + menuBar.add(edit); + menuBar.add(help); + + // file في القائمة exit و save ,open ,newFile هنا قمنا بوضع العناصر + file.add(newFile); + file.add(open); + file.add(save); + file.addSeparator(); // هنا أضفنا خط فاصل + file.add(exit); + + // edit في القائمة select و paste ,copy ,cut ,undo هنا قمنا بوضع العناصر + edit.add(undo); + edit.addSeparator(); // هنا أضفنا خط فاصل + edit.add(cut); + edit.add(copy); + edit.add(paste); + edit.addSeparator(); // هنا أضفنا خط فاصل + edit.add(select); + + // help في القائمة report و about هنا قمنا بوضع العناصر + help.add(about); + help.add(report); + + // frame هنا قمنا بوضع شريط القوائم في الـ + frame.setJMenuBar(menuBar); + + // مرئية frame هنا جعلنا الـ + frame.setVisible(true); + + // هنا نضع الأوامر التي ستنفذ عند النقر على كل عنصر موجود في القائمة + ActionListener al = new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if( e.getSource() == newFile ) + { + // newFile هنا نضع الأوامر التي نريد أن يتم تنفيذه عند النقر على العنصر + } + else if( e.getSource() == open ) + { + // open هنا نضع الأوامر التي نريد أن يتم تنفيذه عند النقر على العنصر + } + else if( e.getSource() == save ) + { + // save هنا نضع الأوامر التي نريد أن يتم تنفيذه عند النقر على العنصر + } + else if( e.getSource() == exit ) + { + // exit هنا نضع الأوامر التي نريد أن يتم تنفيذه عند النقر على العنصر + } + else if( e.getSource() == undo ) + { + // undo هنا نضع الأوامر التي نريد أن يتم تنفيذه عند النقر على العنصر + } + else if( e.getSource() == copy ) + { + // copy هنا نضع الأوامر التي نريد أن يتم تنفيذه عند النقر على العنصر + } + else if( e.getSource() == cut ) + { + // cut هنا نضع الأوامر التي نريد أن يتم تنفيذه عند النقر على العنصر + } + else if( e.getSource() == paste ) + { + // paste هنا نضع الأوامر التي نريد أن يتم تنفيذه عند النقر على العنصر + } + else if( e.getSource() == select ) + { + // select هنا نضع الأوامر التي نريد أن يتم تنفيذه عند النقر على العنصر + } + else if( e.getSource() == about ) + { + // about هنا نضع الأوامر التي نريد أن يتم تنفيذه عند النقر على العنصر + } + else if( e.getSource() == report ) + { + // report هنا نضع الأوامر التي نريد أن يتم تنفيذه عند النقر على العنصر + } + + } + }; + + // al هنا ربطنا جميع العناصر بالكائن + newFile.addActionListener(al); + open.addActionListener(al); + save.addActionListener(al); + exit.addActionListener(al); + undo.addActionListener(al); + cut.addActionListener(al); + copy.addActionListener(al); + paste.addActionListener(al); + select.addActionListener(al); + about.addActionListener(al); + report.addActionListener(al); + + } +} diff --git a/Programmierung2/src/GUIAnwendungen/MenuBar/Submenu.java b/Programmierung2/src/GUIAnwendungen/MenuBar/Submenu.java new file mode 100644 index 0000000..226e212 --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/MenuBar/Submenu.java @@ -0,0 +1,54 @@ +package GUIAnwendungen.MenuBar; +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +public class Submenu { + + public static void main(String[] args) { + + JFrame frame = new JFrame("JMenuBar demo"); // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من + // الكلاس + frame.setSize(500, 250); // هنا قمنا بتحديد حجم النافذة. عرضها 500 و طولها 250 + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج + + // هنا قمنا بتعريف شريط القوائم + JMenuBar menuBar = new JMenuBar(); + + // هنا قمنا بتعريف القائمة التي ستظهر في الشريط و القائمة التي ستظهر بداخلها + JMenu menu = new JMenu("Menu"); + JMenu subMenu = new JMenu("Sub Menu"); + + // هنا قمنا بتعريف 6 عناصر + JMenuItem item1 = new JMenuItem("Item 1"); + JMenuItem item2 = new JMenuItem("Item 2"); + JMenuItem item3 = new JMenuItem("Item 3"); + JMenuItem item4 = new JMenuItem("Item 4"); + JMenuItem item5 = new JMenuItem("Item 5"); + JMenuItem item6 = new JMenuItem("Item 6"); + + // هنا قمنا بوضع القائمة في شريط القوائم + menuBar.add(menu); + + // هنا قمنا بوضع أول ثلاث عناصر في القائمة + menu.add(item1); + menu.add(item2); + menu.add(item3); + + // هنا قمنا بوضع القائمة الداخلية في القائمة + menu.add(subMenu); + + // هنا قمنا بوضع العناصر الثلاثة المتبقية في القائمة الداخلية + subMenu.add(item4); + subMenu.add(item5); + subMenu.add(item6); + + // frame هنا قمنا بوضع شريط القوائم في الـ + frame.setJMenuBar(menuBar); + + // مرئية frame هنا جعلنا الـ + frame.setVisible(true); + + } + +} diff --git a/Programmierung2/src/GUIAnwendungen/ProgressBar.java b/Programmierung2/src/GUIAnwendungen/ProgressBar.java new file mode 100644 index 0000000..5333a9f --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/ProgressBar.java @@ -0,0 +1,75 @@ +package GUIAnwendungen; + + +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPasswordField; +import javax.swing.JProgressBar; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.awt.Color; +public class ProgressBar { + + + + public static void main(String[] args) { + + // هنا قمنا بإنشاء النافذة و جميع الأشياء التي سنضعها فيها + JFrame frame = new JFrame("JProgressBar demo"); + + JLabel label_1 = new JLabel("Password"); + JLabel label_2 = new JLabel("Strength"); + JPasswordField password = new JPasswordField(); + JProgressBar progress = new JProgressBar(0, 10); + + // frame هنا قمنا بتحديد أماكن الأشياء التي سنضيفها في الـ + label_1.setBounds(20, 20, 60, 30); + password.setBounds(90, 20, 140, 30); + label_2.setBounds(20, 60, 60, 30); + progress.setBounds(90, 68, 140, 15); + + // frame هنا قمنا بإضافة جميع الأشياء التي قمنا بتعريفها سابقاً في الـ + frame.add(label_1); + frame.add(password); + frame.add(label_2); + frame.add(progress); + + // frame هنا قمنا بتحديد خصائص الـ + frame.setSize(300, 150); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setLayout(null); + frame.setVisible(true); + + + // password هنا نضع الأوامر التي نريد تنفيذها عند كتابة أو حذف أي حرف موجود في مربع الـ + password.addKeyListener(new KeyListener() { + @Override + public void keyTyped(KeyEvent e) { } + + @Override + public void keyPressed(KeyEvent e) { } + + @Override + public void keyReleased(KeyEvent e) + { + int passLength = password.getPassword().length; + progress.setValue(passLength); + + // إلى الأحمر Progress Bar إذا قام المستخدم بإدخال 4 أحرف, سيتم تغيير لون الـ + if(passLength < 5) + progress.setForeground(Color.red); + + // إلى الأصفر Progress Bar إذا قام المستخدم بإدخال 5-10 أحرف, سيتم تغيير لون الـ + else if(passLength >= 5 && passLength < 10) + progress.setForeground(Color.yellow); + + // إلى الأخضر Progress Bar إذا قام المستخدم بإدخال 10 أحرف أو أكثر, سيتم تغيير لون الـ + else if(passLength >= 10) + progress.setForeground(Color.green); + + } + }); + + } + +} diff --git a/Programmierung2/src/GUIAnwendungen/RadioButton.java b/Programmierung2/src/GUIAnwendungen/RadioButton.java new file mode 100644 index 0000000..b432e8c --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/RadioButton.java @@ -0,0 +1,70 @@ +package GUIAnwendungen; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JRadioButton; +import javax.swing.ButtonGroup; +import javax.swing.JButton; + +public class RadioButton { + + static JFrame frame = new JFrame("JRadioButton demo"); + static JLabel label = new JLabel("Select your language"); + static JRadioButton radioButton_1 = new JRadioButton("Arabic", true); + static JRadioButton radioButton_2 = new JRadioButton("English"); + static JRadioButton radioButton_3 = new JRadioButton("French"); + static JLabel labelResult = new JLabel(); + static JButton button = new JButton("View selected choice"); + + + public static void main(String[] args) { + + ButtonGroup group = new ButtonGroup(); + group.add(radioButton_1); + group.add(radioButton_2); + group.add(radioButton_3); + + label.setBounds(40, 10, 150, 30); + radioButton_1.setBounds(40, 40, 100, 30); + radioButton_2.setBounds(40, 70, 100, 30); + radioButton_3.setBounds(40, 100, 100, 30); + button.setBounds(40, 150, 170, 30); + labelResult.setBounds(40, 190, 180, 30); + + + frame.add(label); + frame.add(radioButton_1); + frame.add(radioButton_2); + frame.add(radioButton_3); + frame.add(button); + frame.add(labelResult); + + frame.setSize(300, 300); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setLayout(null); + frame.setVisible(true); + + + button.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) + { + // labelResult سيتم وضع النص التالي كنص للـ radioButton_1 إذا قام المستخدم بإختيار الـ + if(radioButton_1.isSelected()) + labelResult.setText("You language is: "+radioButton_1.getText()); + + // labelResult سيتم وضع النص التالي كنص للـ radioButton_2 إذا قام المستخدم بإختيار الـ + else if(radioButton_2.isSelected()) + labelResult.setText("You language is: "+radioButton_2.getText()); + + // labelResult سيتم وضع النص التالي كنص للـ radioButton_3 إذا قام المستخدم بإختيار الـ + else if(radioButton_3.isSelected()) + labelResult.setText("You language is: "+radioButton_3.getText()); + } + }); + + } + +} diff --git a/Programmierung2/src/GUIAnwendungen/Spinner.java b/Programmierung2/src/GUIAnwendungen/Spinner.java new file mode 100644 index 0000000..92fdac3 --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/Spinner.java @@ -0,0 +1,48 @@ +package GUIAnwendungen; + +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JSpinner; +import javax.swing.SpinnerListModel; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; + + +public class Spinner { + + // هنا قمنا بإنشاء النافذة و جميع الأشياء التي سنضعها فيها + static JFrame frame = new JFrame("JSpinner demo"); + static String[] levels = { "Easy", "Meduim", "Hard" }; + static SpinnerListModel model = new SpinnerListModel(levels); + static JSpinner spinner = new JSpinner(model); + static JLabel label = new JLabel("Level: Easy"); + + public static void main(String[] args) { + + // frame هنا قمنا بتحديد أماكن الأشياء التي سنضيفها في الـ + spinner.setBounds(100, 40, 100, 30); + label.setBounds(100, 80, 100, 30); + + // frame هنا قمنا بإضافة جميع الأشياء التي قمنا بتعريفها سابقاً في الـ + frame.add(spinner); + frame.add(label); + + // frame هنا قمنا بتحديد خصائص الـ + frame.setSize(300, 250); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setLayout(null); + frame.setVisible(true); + + + // spinner هنا نضع الأوامر التي نريد تنفيذها في كل مرة يتم فيها تغيير قيمة الـ + spinner.addChangeListener(new ChangeListener() { + @Override + // سيتم عرض القيمة التي إختارها + public void stateChanged(ChangeEvent e) { + label.setText("Level: " + spinner.getValue()); + } + }); + + } + +} diff --git a/Programmierung2/src/GUIAnwendungen/Table.java b/Programmierung2/src/GUIAnwendungen/Table.java new file mode 100644 index 0000000..28751f7 --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/Table.java @@ -0,0 +1,137 @@ +package GUIAnwendungen; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JTextField; +import javax.swing.JButton; +import javax.swing.JTable; +import javax.swing.table.DefaultTableModel; +import javax.swing.JScrollPane; + + +public class Table { + // هنا قمنا بإنشاء النافذة و جميع الأشياء التي سنضعها فيها + static JFrame frame = new JFrame("JTable demo"); + static JLabel label_1 = new JLabel("ID"); + static JLabel label_2 = new JLabel("Name"); + static JLabel label_3 = new JLabel("Phone"); + static JTextField textField_1 = new JTextField(); + static JTextField textField_2 = new JTextField(); + static JTextField textField_3 = new JTextField(); + static JButton btn_add = new JButton("Add"); + static JButton btn_clear = new JButton("Clear"); + static JButton btn_delete = new JButton("Delete Selected"); + static JButton btn_deleteAll = new JButton("Delete All"); + static DefaultTableModel model = new DefaultTableModel(); + static JTable table = new JTable( model ); + static JScrollPane tableScroller = new JScrollPane( table ); + + + public static void main(String[] args) { + + // هنا قمنا بوضع أسماء الأعمدة التي ستظهر في الجدول + model.addColumn("ID"); + model.addColumn("Name"); + model.addColumn("Phone"); + + // frame هنا قمنا بتحديد أماكن الأشياء التي سنضيفها في الـ + label_1.setBounds(40, 50, 50, 20); + label_2.setBounds(40, 90, 50, 20); + label_3.setBounds(40, 130, 50, 20); + textField_1.setBounds(100, 50, 120, 20); + textField_2.setBounds(100, 90, 120, 20); + textField_3.setBounds(100, 130, 120, 20); + btn_add.setBounds(150, 180, 70, 30); + btn_clear.setBounds(70, 180, 70, 30); + btn_delete.setBounds(315, 250, 140, 30); + btn_deleteAll.setBounds(470, 250, 140, 30); + tableScroller.setBounds(280, 50, 370, 160); + + // frame هنا قمنا بإضافة جميع الأشياء التي قمنا بتعريفها سابقاً في الـ + frame.add(label_1); + frame.add(label_2); + frame.add(label_3); + frame.add(textField_1); + frame.add(textField_2); + frame.add(textField_3); + frame.add(btn_add); + frame.add(btn_clear); + frame.add(btn_delete); + frame.add(btn_deleteAll); + frame.add(tableScroller); + + // frame هنا قمنا بتحديد خصائص الـ + frame.setSize(710, 350); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setLayout(null); + frame.setVisible(true); + + + // btn_add هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ + btn_add.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) + { + // إذا قام المستخدم بإدخال بيانات في مربعات النصوص الثلاثة + if( !textField_1.getText().equals("") && !textField_2.getText().equals("") && !textField_3.getText().equals("") ) + { + // عندها سيتم تخزينهم في متغيرات بشكل مؤقت + String id = textField_1.getText(); + String name = textField_2.getText(); + String phone = textField_3.getText(); + + // الخاصة بالجدول model بعدها سيتم تخزينهم في مصفوفة واحدة, ثم إضافتها في الـ + String[] userInfo = { id, name, phone }; + model.addRow( userInfo ); + } + } + }); + + + // btn_clear هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ + btn_clear.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) + { + // سيتم مسح النصوص المدخلة في مربعات النصوص الثلاثة + textField_1.setText(""); + textField_2.setText(""); + textField_3.setText(""); + } + }); + + + // btn_delete هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ + btn_delete.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + // إذا كان المستخدم قد قام بتحديد سطر واحد على الأقل من الجدول + if( table.getSelectedRowCount() > 0 ) + { + // الخاص فيه index كل سطر قام المستخدم بتحديده من الجدول بعدها سيتم حذف كل سطر من خلال رقم الـ index سيتم تخزين رقم + int[] selectedIndices = table.getSelectedRows(); + for( int i=selectedIndices.length-1; i>=0; i-- ) + { + model.removeRow( selectedIndices[i] ); + } + } + } + }); + + + // btn_deleteAll هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ + btn_deleteAll.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) + { + // يساوي 0. أي سيتم مسح جميع العناصر الموجودة فيها model هنا سيتم جعل عدد أسطر الـ + model.setRowCount(0); + } + }); + + + } + + +} diff --git a/Programmierung2/src/GUIAnwendungen/Test.jpg b/Programmierung2/src/GUIAnwendungen/Test.jpg deleted file mode 100644 index 0c7ff29..0000000 Binary files a/Programmierung2/src/GUIAnwendungen/Test.jpg and /dev/null differ diff --git a/Programmierung2/src/GUIAnwendungen/TextEingaben.java b/Programmierung2/src/GUIAnwendungen/TextEingaben.java index 8afb92a..8328cae 100644 --- a/Programmierung2/src/GUIAnwendungen/TextEingaben.java +++ b/Programmierung2/src/GUIAnwendungen/TextEingaben.java @@ -8,13 +8,6 @@ import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JTextField; -/*Beschreibung das Problem: - * Instanzvariablen sollten verwendet werden, wenn du sicherstellen möchtest, dass Variablen wie JButton und JTextField in der gesamten Klasse (und in actionPerformed) sichtbar sind. - Der Konstruktor der Klasse wird verwendet, um die GUI-Komponenten zu initialisieren und das Fenster aufzubauen. - Die main-Methode ist static und dient dazu, die Anwendung zu starten, indem sie eine Instanz der Klasse erstellt. - Anonyme innere Klassen sind eine praktische Möglichkeit, wenn du einfache Event-Handling-Logik direkt in der main-Methode implementieren möchtest, ohne eine zusätzliche Klasse oder Instanzmethoden zu erstellen. - * - */ public class TextEingaben extends JFrame implements ActionListener { // Instanzvariablen diff --git a/Programmierung2/src/GUIAnwendungen/Tree.java b/Programmierung2/src/GUIAnwendungen/Tree.java new file mode 100644 index 0000000..faeb006 --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/Tree.java @@ -0,0 +1,56 @@ +package GUIAnwendungen; +import javax.swing.JFrame; +import java.awt.GridLayout; +import javax.swing.JTree; +import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.JScrollPane; +public class Tree { + + public static void main(String[] args) { + + JFrame frame = new JFrame("JTree demo"); // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من + // الكلاس + frame.setSize(350, 300); // هنا قمنا بتحديد النافذة. عرضها 350 و طولها 300 + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج + frame.setLayout(new GridLayout()); // في كامل الشاشة مهما كان حجمها Tree لأننا سنضع الـ Layout Manager كـ + // GridLayout هنا إستخدمنا كائن من الكلاس + + // Tree التي سنضعها في الـ Nodes هنا قمنا بتعريف جميع الـ + DefaultMutableTreeNode menu = new DefaultMutableTreeNode("Menu"); + DefaultMutableTreeNode food = new DefaultMutableTreeNode("Food"); + DefaultMutableTreeNode drink = new DefaultMutableTreeNode("Drink"); + DefaultMutableTreeNode pizza = new DefaultMutableTreeNode("Pizza"); + DefaultMutableTreeNode hotDogs = new DefaultMutableTreeNode("Hot Dogs"); + DefaultMutableTreeNode chicken = new DefaultMutableTreeNode("Chicken"); + DefaultMutableTreeNode hamburger = new DefaultMutableTreeNode("Hamburger"); + DefaultMutableTreeNode pepsi = new DefaultMutableTreeNode("Pepsi"); + DefaultMutableTreeNode cola = new DefaultMutableTreeNode("Cola"); + DefaultMutableTreeNode rani = new DefaultMutableTreeNode("Rani"); + DefaultMutableTreeNode water = new DefaultMutableTreeNode("Water"); + + // بداخل بعضهم البعض تماماً كما يظهر في نتيجة التشغيل Nodes هنا قمنا بوضع الـ + menu.add(food); + menu.add(drink); + food.add(pizza); + food.add(hotDogs); + food.add(chicken); + food.add(hamburger); + drink.add(pepsi); + drink.add(cola); + drink.add(rani); + drink.add(water); + + // لها Root Node كـ menu مع وضع كائن الـ Tree هنا قمنا بتعريف الـ + JTree tree = new JTree(menu); + + tree.setToggleClickCount(1); // تظهر ما فيها من نقرة واحدة Node هنا جعلنا أي + tree.setEditable(true); // عند النقر على إسمها ثلاث مرات متتالية Node بالإضافة إلى أنه يمكن تغيير إسم أي + + JScrollPane treeScroller = new JScrollPane(tree); // عند الحاجة Scroll Bar لضمان ظهور JScrollPane بداخل كائن من + // الكلاس tree هنا وضعنا الـ + frame.add(treeScroller); // frame في الـ treeScroller هنا أضفنا الـ + frame.setVisible(true); // هنا جعلنا النافذة مرئية + + } + +}