package com.mycompany.todolistapp;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
public class ToDolistApp extends JFrame {
private DefaultListModel<String> listModel;
private JList<String> taskList;
private JTextField taskField;
private ArrayList<String> tasks;
public ToDolistApp() {
setTitle("To-Do List App");
setSize(400, 400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
tasks = new ArrayList<>();
listModel = new DefaultListModel<>();
taskList = new JList<>(listModel);
JScrollPane scrollPane = new JScrollPane(taskList);
taskField = new JTextField();
JButton addButton = new JButton("Add Task");
JButton deleteButton = new JButton("Delete Task");
// Panel for input + buttons
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(1, 3));
panel.add(taskField);
panel.add(addButton);
panel.add(deleteButton);
add(scrollPane, BorderLayout.CENTER);
add(panel, BorderLayout.SOUTH);
// Add button action
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String task = taskField.getText().trim();
if (!task.isEmpty()) {
tasks.add(task);
listModel.addElement(task);
taskField.setText("");
} else {
JOptionPane.showMessageDialog(null, "Please enter a task!");
}
}
});
// Delete button action
deleteButton.addActionListener((ActionEvent e) -> {
int selectedIndex = taskList.getSelectedIndex();
if (selectedIndex != -1) {
tasks.remove(selectedIndex);
listModel.remove(selectedIndex);
} else {
JOptionPane.showMessageDialog(null, "Select a task to delete!");
}
});
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
new ToDolistApp().setVisible(true);
});
}
}
نوع المشروع: تطبيق سطح مكتب (Desktop Application).
اللغة: Java (باستخدام مكتبة Swing للواجهات الرسومية).
الغرض: برنامج يساعد المستخدم على إدارة قائمة مهامه اليومية (إضافة / حذف / عرض المهام).
مميزاته
1. واجهة رسومية بسيطة وسهلة الاستخدام (قائمة بالمهام + أزرار تحكم).
2. إضافة مهمة جديدة بكتابة النص والضغط على زر "Add Task".
3. حذف مهمة من القائمة بالضغط على زر "Delete Task".
4. تنظيم المهام في شكل قائمة (JList).
5. تخزين مؤقت للمهام باستخدام ArrayList (ممكن تطويره لاحقًا لحفظ في ملف أو قاعدة بيانات).
6. رسائل تنبيهية عند محاولة إضافة مهمة فارغة أو حذف بدون تحديد.