Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions part-1/ClickCounterApp.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class ClickCounterApp extends JFrame implements ActionListener {
private JLabel counterLabel;
private JButton clickButton;
private int count = 0;

public ClickCounterApp() {
setTitle("Click Counter");
setSize(200, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);


counterLabel = new JLabel("Clicks: 0", SwingConstants.CENTER);
counterLabel.setFont(new Font("SansSerif", Font.BOLD, 30));

clickButton = new JButton("Click Me");
clickButton.setPreferredSize(new Dimension(100, 85));
clickButton.setFont(new Font("SansSerif", Font.BOLD, 30));




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(() -> {
ClickCounterApp app = new ClickCounterApp();
app.setVisible(true);
});
}
}
Empty file removed part-1/E1.java
Empty file.
Empty file removed part-2/E2.java
Empty file.
66 changes: 66 additions & 0 deletions part-2/GreetingFormApp.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


class EmptyNameException extends Exception {
public EmptyNameException(String message) {
super(message);
}
}

public class GreetingFormApp extends JFrame implements ActionListener {
private JTextField nameField;
private JButton greetButton;
private JLabel messageLabel;

public GreetingFormApp() {
setTitle("Greeting Form with Exception");
setSize(400, 150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);

nameField = new JTextField(15);
greetButton = new JButton("Greet");

messageLabel = new JLabel("Enter your name and press Greet.", SwingConstants.CENTER);
messageLabel.setFont(new Font("Arial", Font.PLAIN, 20));
messageLabel.setForeground(Color.red);

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

@Override
public void actionPerformed(ActionEvent e) {
String name = nameField.getText().trim();
try {
validateName(name);
messageLabel.setText("Hello, " + name + "!");
messageLabel.setFont(new Font("Arial", Font.PLAIN, 20));
messageLabel.setForeground(Color.green);

} catch (EmptyNameException ex) {
messageLabel.setText(ex.getMessage());
}
}

private void validateName(String name) throws EmptyNameException {
if (name.isEmpty()) {
throw new EmptyNameException("Please enter a name.");
}
}

public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new GreetingFormApp().setVisible(true));
}
}
Empty file removed part-3/E3.java
Empty file.
94 changes: 94 additions & 0 deletions part-3/ThemeColorSelectorApp.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class ThemeColorSelectorApp extends JFrame implements ActionListener {
private JPanel mainPanel;
private JButton redButton, greenButton, blueButton, autoButton;
private Timer colorTimer;
private Color[] colors = {Color.RED , Color.BLUE};
private int colorIndex = 0;

public ThemeColorSelectorApp() {
setTitle("Theme Color Selector");
setSize(400, 420);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);

mainPanel = new JPanel();

redButton = new JButton("Red");
greenButton = new JButton("Green");
blueButton = new JButton("Blue");
autoButton = new JButton("police");



Font customFont = new Font("Arial", Font.BOLD, 16);

redButton.setFont(customFont);
greenButton.setFont(customFont);
blueButton.setFont(customFont);
autoButton.setFont(customFont);

redButton.setBackground(Color.RED);
greenButton.setBackground(Color.GREEN);
blueButton.setBackground(Color.BLUE);
autoButton.setBackground(Color.gray);



redButton.setActionCommand("RED");
greenButton.setActionCommand("GREEN");
blueButton.setActionCommand("BLUE");
autoButton.setActionCommand("police");

redButton.addActionListener(this);
greenButton.addActionListener(this);
blueButton.addActionListener(this);
autoButton.addActionListener(this);

JPanel buttonPanel = new JPanel();
buttonPanel.add(redButton);
buttonPanel.add(greenButton);
buttonPanel.add(blueButton);
buttonPanel.add(autoButton);

setLayout(new BorderLayout());
add(buttonPanel, BorderLayout.NORTH);
add(mainPanel, BorderLayout.CENTER);


colorTimer = new Timer(150, e -> {
mainPanel.setBackground(colors[colorIndex]);
colorIndex = (colorIndex + 1) % colors.length;
});
}

@Override
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();

// توقف Timer در هر بار کلیک
colorTimer.stop();

switch (command) {
case "RED":
mainPanel.setBackground(Color.RED);
break;
case "GREEN":
mainPanel.setBackground(Color.GREEN);
break;
case "BLUE":
mainPanel.setBackground(Color.BLUE);
break;
case "police":
colorTimer.start(); // شروع حالت چند رنگه
break;
}
}

public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new ThemeColorSelectorApp().setVisible(true));
}
}
Empty file removed part-4/E4.java
Empty file.
104 changes: 104 additions & 0 deletions part-4/RegistrationFormApp.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class RegistrationFormApp 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 RegistrationFormApp() {
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;

// Row 0: Name label & field
gbc.gridx = 0; gbc.gridy = 0;
panel.add(new JLabel("Name:"), gbc);
gbc.gridx = 1;
txtName = new JTextField(20);
panel.add(txtName, gbc);

// Row 1: Email label & field
gbc.gridx = 0; gbc.gridy = 1;
panel.add(new JLabel("Email:"), gbc);
gbc.gridx = 1;
txtEmail = new JTextField(20);
panel.add(txtEmail, gbc);

// Row 2: Password label & field
gbc.gridx = 0; gbc.gridy = 2;
panel.add(new JLabel("Password:"), gbc);
gbc.gridx = 1;
txtPassword = new JPasswordField(20);
panel.add(txtPassword, gbc);

// Row 3: Gender selection
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);

// Row 4: Interests selection
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);

// Row 5: Submit button
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 RegistrationFormApp().setVisible(true));
}
}