master
3009594 2024-09-02 22:21:20 +02:00
parent 93f837d241
commit a1f2f1c22b
23 changed files with 952 additions and 400 deletions

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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");
}
});
}
}

View File

@ -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());
}
});
}
}

View File

@ -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 هنا قمنا بتشغيل كائن الـ
}
}

View File

@ -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)
{
// هنا من المفترض أن تضع الأوامر التي سيتم تنفيذها بعد إختيار الملف أو المجلد
}
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
public static void main(String[] args) {
JFrame frame = new JFrame();
// هنا قمنا بإنشاء النافذة مع تحديد بعض خصائصها
JFrame frame = new JFrame("JPanel demo");
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(null);
//stellt sicher, dass keine automatische Positionierung und Größenanpassung erhalten
frame.setLayout(null);
// و وضعنا له حدود و عنوان Layout Manager لا يستخدم أي Panel هنا قمنا بتعريف
JPanel panel = new JPanel(null);
panel.setBorder(BorderFactory.createTitledBorder("Add User"));
panel.setBounds(50, 30, 290, 300);
// setSize(width, height)
frame.setSize(750, 750);
// Frame في الـ Panel هنا وضعنا الـ
frame.add(panel);
// setzte einen Überschrift für mein Fenster
frame.setTitle("Mein erstes Fenster");
// 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");
//setVisible(boolean): gibt an, ob mein Fenster sichtbar ist oder nicht
frame.setVisible(true);
// 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);
frame.add(panel);
// 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);
}
}
}

View File

@ -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();
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
});
}
}

View File

@ -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());
}
});
}
}

View File

@ -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());
}
});
}
}

View File

@ -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);
}
});
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

View File

@ -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

View File

@ -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); // هنا جعلنا النافذة مرئية
}
}