diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/JavaSwingSimpleExercise.iml b/.idea/JavaSwingSimpleExercise.iml
new file mode 100644
index 0000000..1644d35
--- /dev/null
+++ b/.idea/JavaSwingSimpleExercise.iml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..f03c948
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..2d16929
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/out/production/JavaSwingSimpleExercise/E1.class b/out/production/JavaSwingSimpleExercise/E1.class
new file mode 100644
index 0000000..a63b8fd
Binary files /dev/null and b/out/production/JavaSwingSimpleExercise/E1.class differ
diff --git a/out/production/JavaSwingSimpleExercise/images/img-1-1.png b/out/production/JavaSwingSimpleExercise/images/img-1-1.png
new file mode 100644
index 0000000..12b529a
Binary files /dev/null and b/out/production/JavaSwingSimpleExercise/images/img-1-1.png differ
diff --git a/out/production/JavaSwingSimpleExercise/images/img-1-2.png b/out/production/JavaSwingSimpleExercise/images/img-1-2.png
new file mode 100644
index 0000000..a78ac9e
Binary files /dev/null and b/out/production/JavaSwingSimpleExercise/images/img-1-2.png differ
diff --git a/out/production/JavaSwingSimpleExercise/readme-part-1.md b/out/production/JavaSwingSimpleExercise/readme-part-1.md
new file mode 100644
index 0000000..f7292df
--- /dev/null
+++ b/out/production/JavaSwingSimpleExercise/readme-part-1.md
@@ -0,0 +1,67 @@
+## Exercise 1: Click Counter Application
+
+### Description & Goal
+
+Create a simple GUI application that tracks how many times a user clicks a button and displays the count in real time. This exercise reinforces the basics of Swing components and event handling.
+
+### Code Breakdown
+
+**Part 1: Field Declarations**
+Define the UI components and a counter variable.
+
+```java
+public class ClickCounterApp extends JFrame implements ActionListener {
+ private JLabel counterLabel; // Displays the click count
+ private JButton clickButton; // Button to register clicks
+ private int count = 0; // Stores the current count
+}
+```
+
+*Explanation:* We declare a `JLabel` for showing the count, a `JButton` for clicks, and an integer `count` initialized to 0.
+
+**Part 2: Constructor Setup**
+Initialize and arrange components in the window.
+
+```java
+public ClickCounterApp() {
+ setTitle("Click Counter");
+ counterLabel = new JLabel("Clicks: 0", SwingConstants.CENTER);
+ clickButton = new JButton("Click Me");
+ clickButton.addActionListener(this);
+
+ setLayout(new BorderLayout());
+ add(counterLabel, BorderLayout.CENTER);
+ add(clickButton, BorderLayout.SOUTH);
+}
+```
+
+*Explanation:* In the constructor we set the title, create the label and button, attach an `ActionListener` to the button, choose a `BorderLayout`, and place the label at center and button at bottom.
+
+**Part 3: Event Handling**
+Update count and label text when the button is clicked.
+
+```java
+@Override
+public void actionPerformed(ActionEvent e) {
+ count++; // Increment the click counter
+ counterLabel.setText("Clicks: " + count);
+}
+```
+
+*Explanation:* The `actionPerformed` method is called on each click. We increase `count` by one and refresh the label text to reflect the new value.
+
+**Part 4: Application Entry Point**
+Launch the GUI on the Event Dispatch Thread.
+
+```java
+public static void main(String[] args) {
+ SwingUtilities.invokeLater(() -> new ClickCounterApp().setVisible(true));
+}
+```
+
+*Explanation:* Using `SwingUtilities.invokeLater` ensures thread safety by creating and showing the GUI on the Swing event thread.
+---
+### output of the code:
+
+
+
diff --git a/part-1/E1.java b/part-1/E1.java
index e69de29..07b5dd7 100644
--- a/part-1/E1.java
+++ b/part-1/E1.java
@@ -0,0 +1,37 @@
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+public class E1 extends JFrame implements ActionListener {
+ private JLabel counterLabel;
+ private JButton clickButton;
+ private int count = 0;
+
+ public E1() {
+ setTitle("Click Counter");
+ setSize(300, 200);
+ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+ counterLabel = new JLabel("Clicks: 0", SwingConstants.CENTER);
+ clickButton = new JButton("Click Me");
+ clickButton.addActionListener(this);
+
+ setLayout(new BorderLayout());
+ add(counterLabel, BorderLayout.CENTER);
+ add(clickButton, BorderLayout.SOUTH);
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ count++;
+ counterLabel.setText("Clicks: " + count);
+ }
+
+ public static void main(String[] args) {
+ SwingUtilities.invokeLater(() -> {
+ E1 app = new E1();
+ app.setVisible(true);
+ });
+ }
+}
diff --git a/part-2/E2.java b/part-2/E2.java
index e69de29..f6ccf2a 100644
--- a/part-2/E2.java
+++ b/part-2/E2.java
@@ -0,0 +1,44 @@
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.*;
+
+public class E2 extends JFrame implements ActionListener {
+ private JTextField nameField;
+ private JButton greetButton;
+ private JLabel messageLabel;
+
+ public E2() {
+ setTitle("Greeting Form");
+ nameField = new JTextField(15);
+ greetButton = new JButton("Greet");
+ messageLabel = new JLabel("Enter your name and press Greet.", SwingConstants.CENTER);
+
+ greetButton.addActionListener(this);
+
+ JPanel inputPanel = new JPanel();
+ inputPanel.add(new JLabel("Name:"));
+ inputPanel.add(nameField);
+ inputPanel.add(greetButton);
+
+ setLayout(new BorderLayout());
+ add(inputPanel, BorderLayout.NORTH);
+ add(messageLabel, BorderLayout.CENTER);
+
+ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ setSize(400, 200);
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ String name = nameField.getText().trim();
+ if (name.isEmpty()) {
+ messageLabel.setText("Please enter a name.");
+ } else {
+ messageLabel.setText("Hello, " + name + "!");
+ }
+ }
+
+ public static void main(String[] args) {
+ SwingUtilities.invokeLater(() -> new E2().setVisible(true));
+ }
+}
diff --git a/part-3/E3.java b/part-3/E3.java
index e69de29..04ec6c2 100644
--- a/part-3/E3.java
+++ b/part-3/E3.java
@@ -0,0 +1,59 @@
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.*;
+
+public class E3 extends JFrame implements ActionListener {
+ private JPanel mainPanel;
+ private JButton redButton;
+ private JButton greenButton;
+ private JButton blueButton;
+
+ public E3() {
+ setTitle("Theme Color Selector");
+
+ mainPanel = new JPanel();
+
+ redButton = new JButton("Red");
+ greenButton = new JButton("Green");
+ blueButton = new JButton("Blue");
+
+ redButton.setActionCommand("RED");
+ greenButton.setActionCommand("GREEN");
+ blueButton.setActionCommand("BLUE");
+
+ redButton.addActionListener(this);
+ greenButton.addActionListener(this);
+ blueButton.addActionListener(this);
+
+ JPanel buttonPanel = new JPanel();
+ buttonPanel.add(redButton);
+ buttonPanel.add(greenButton);
+ buttonPanel.add(blueButton);
+
+ setLayout(new BorderLayout());
+ add(buttonPanel, BorderLayout.NORTH);
+ add(mainPanel, BorderLayout.CENTER);
+
+ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ setSize(400, 200);
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ switch (e.getActionCommand()) {
+ case "RED":
+ mainPanel.setBackground(Color.RED);
+ break;
+ case "GREEN":
+ mainPanel.setBackground(Color.GREEN);
+ break;
+ case "BLUE":
+ mainPanel.setBackground(Color.BLUE);
+ break;
+ }
+ }
+
+ public static void main(String[] args) {
+ SwingUtilities.invokeLater(() -> new E3().setVisible(true));
+ }
+}
diff --git a/part-4/E4.java b/part-4/E4.java
index e69de29..06e28ef 100644
--- a/part-4/E4.java
+++ b/part-4/E4.java
@@ -0,0 +1,104 @@
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.*;
+
+public class E4 extends JFrame implements ActionListener {
+ private JTextField txtName;
+ private JTextField txtEmail;
+ private JPasswordField txtPassword;
+ private JRadioButton rbMale, rbFemale;
+ private JCheckBox cbJava, cbPython, cbCpp;
+ private JButton btnSubmit;
+ private GridBagConstraints gbc;
+
+ public E4() {
+ setTitle("User Registration");
+ setSize(500, 350);
+ setDefaultCloseOperation(EXIT_ON_CLOSE);
+ setLocationRelativeTo(null);
+
+ JPanel panel = new JPanel(new GridBagLayout());
+ gbc = new GridBagConstraints();
+ gbc.insets = new Insets(5, 5, 5, 5);
+ gbc.fill = GridBagConstraints.HORIZONTAL;
+
+ gbc.gridx = 0;
+ gbc.gridy = 0;
+ panel.add(new JLabel("Name:"), gbc);
+ gbc.gridx = 1;
+ txtName = new JTextField(20);
+ panel.add(txtName, gbc);
+
+ gbc.gridx = 0;
+ gbc.gridy = 1;
+ panel.add(new JLabel("Email:"), gbc);
+ gbc.gridx = 1;
+ txtEmail = new JTextField(20);
+ panel.add(txtEmail, gbc);
+
+ gbc.gridx = 0;
+ gbc.gridy = 2;
+ panel.add(new JLabel("Password:"), gbc);
+ gbc.gridx = 1;
+ txtPassword = new JPasswordField(20);
+ panel.add(txtPassword, gbc);
+
+ gbc.gridx = 0;
+ gbc.gridy = 3;
+ panel.add(new JLabel("Gender:"), gbc);
+ gbc.gridx = 1;
+ rbMale = new JRadioButton("Male");
+ rbFemale = new JRadioButton("Female");
+ ButtonGroup bg = new ButtonGroup();
+ bg.add(rbMale);
+ bg.add(rbFemale);
+ JPanel genderPanel = new JPanel();
+ genderPanel.add(rbMale);
+ genderPanel.add(rbFemale);
+ panel.add(genderPanel, gbc);
+
+ gbc.gridx = 0;
+ gbc.gridy = 4;
+ panel.add(new JLabel("Interests:"), gbc);
+ gbc.gridx = 1;
+ cbJava = new JCheckBox("Java");
+ cbPython = new JCheckBox("Python");
+ cbCpp = new JCheckBox("C++");
+ JPanel interestPanel = new JPanel();
+ interestPanel.add(cbJava);
+ interestPanel.add(cbPython);
+ interestPanel.add(cbCpp);
+ panel.add(interestPanel, gbc);
+
+ gbc.gridx = 1;
+ gbc.gridy = 5;
+ gbc.anchor = GridBagConstraints.CENTER;
+ btnSubmit = new JButton("Submit");
+ btnSubmit.addActionListener(this);
+ panel.add(btnSubmit, gbc);
+
+ add(panel);
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ String name = txtName.getText();
+ String email = txtEmail.getText();
+ String gender = rbMale.isSelected() ? "Male" : rbFemale.isSelected() ? "Female" : "Unspecified";
+ String interests = "";
+ if (cbJava.isSelected()) interests += "Java ";
+ if (cbPython.isSelected()) interests += "Python ";
+ if (cbCpp.isSelected()) interests += "C++ ";
+
+ JOptionPane.showMessageDialog(this,
+ "Name: " + name + "\n" +
+ "Email: " + email + "\n" +
+ "Gender: " + gender + "\n" +
+ "Interests: " + interests,
+ "Registration Details", JOptionPane.INFORMATION_MESSAGE);
+ }
+
+ public static void main(String[] args) {
+ SwingUtilities.invokeLater(() -> new E4().setVisible(true));
+ }
+}