From 121839307fc924cd1de11e5318213155b09315a8 Mon Sep 17 00:00:00 2001 From: MEHRANalikhan84 Date: Sun, 1 Jun 2025 02:11:07 +0430 Subject: [PATCH] simple --- part-1/ClickCounterApp.java | 50 ++++++++++++++ part-1/E1.java | 0 part-2/E2.java | 0 part-2/GreetingFormApp.java | 66 +++++++++++++++++++ part-3/E3.java | 0 part-3/ThemeColorSelectorApp.java | 94 +++++++++++++++++++++++++++ part-4/E4.java | 0 part-4/RegistrationFormApp.java | 104 ++++++++++++++++++++++++++++++ 8 files changed, 314 insertions(+) create mode 100644 part-1/ClickCounterApp.java delete mode 100644 part-1/E1.java delete mode 100644 part-2/E2.java create mode 100644 part-2/GreetingFormApp.java delete mode 100644 part-3/E3.java create mode 100644 part-3/ThemeColorSelectorApp.java delete mode 100644 part-4/E4.java create mode 100644 part-4/RegistrationFormApp.java diff --git a/part-1/ClickCounterApp.java b/part-1/ClickCounterApp.java new file mode 100644 index 0000000..95b6aac --- /dev/null +++ b/part-1/ClickCounterApp.java @@ -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); + }); + } +} diff --git a/part-1/E1.java b/part-1/E1.java deleted file mode 100644 index e69de29..0000000 diff --git a/part-2/E2.java b/part-2/E2.java deleted file mode 100644 index e69de29..0000000 diff --git a/part-2/GreetingFormApp.java b/part-2/GreetingFormApp.java new file mode 100644 index 0000000..a003af8 --- /dev/null +++ b/part-2/GreetingFormApp.java @@ -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)); + } +} diff --git a/part-3/E3.java b/part-3/E3.java deleted file mode 100644 index e69de29..0000000 diff --git a/part-3/ThemeColorSelectorApp.java b/part-3/ThemeColorSelectorApp.java new file mode 100644 index 0000000..cab88f5 --- /dev/null +++ b/part-3/ThemeColorSelectorApp.java @@ -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)); + } +} diff --git a/part-4/E4.java b/part-4/E4.java deleted file mode 100644 index e69de29..0000000 diff --git a/part-4/RegistrationFormApp.java b/part-4/RegistrationFormApp.java new file mode 100644 index 0000000..f91c13e --- /dev/null +++ b/part-4/RegistrationFormApp.java @@ -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)); + } +}